Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

storage: api refactor. #253

Merged

Conversation

@stephenplusplus
Copy link
Contributor Author

@mafintosh, as promised, here's my ping :)

A little intro-- gcloud-node is the Node gateway to Google's cloud services, such as Datastore, PubSub, and Cloud Storage. Cloud Storage lets you store files in "buckets," so we wanted to allow users a way to stream files in and out of their buckets.

Before a user can do that, we have to generate a valid connection, which includes making an API request to retrieve a token. Because of this, Duplexify was a great fit, because we needed to set the readable and writable portions of the stream asynchronously.

This is how our API looks currently (using Duplexify behind the scenes):

var fs = require('fs');
var gcloud = require('gcloud')({ /* connection details. */ });
var bucket = gcloud.storage.bucket({ bucketName: 'my-bucket' });

// Uploading a file.
fs.createReadStream('/local/file.jpg')
  .pipe(bucket.createWriteStream('file-to-create-in-the-bucket.jpg'));

// Downloading a file.
bucket.createReadStream('file-from-the-bucket.jpg')
  .pipe(fs.createWriteStream('/new/local/file.jpg'));

This PR uses Duplexify a little differently, so that our api would look like:

var fs = require('fs');
var gcloud = require('gcloud')({ /* connection details. */ });
var bucket = gcloud.storage.bucket('my-bucket');

// Uploading a file.
fs.createReadStream('/local/file.jpg')
  .pipe(bucket.file('file-to-create-in-the-bucket.jpg'));

// Downloading a file.
bucket.file('file-from-the-bucket.jpg')
  .pipe(fs.createWriteStream('/new/local/file.jpg'));

bucket.file(/*...*/) is a wrapper for new File() -- File inherits Duplexify.

Truthfully, I have no idea if I'm doing anything shameful with this implementation, which is why I would love a review! Here is the File class: https://github.com/stephenplusplus/gcloud-node/blob/spp--storage-refactor/lib/storage/file.js (please forgive the massive amounts of comments :))

My points of concern:

The problem:

A user can ask for a File object without wanting to pipe data to/from it. A File object has other functionality beyond being used as a stream. Because we need to make an API request to fetch a token before the stream can be used, we need to wait until we know they're going to be using this as a stream.

The solution: bindEvents_

This is called at the instantiation of a File object. It caches _write and _read, then overwrites them so that the first time they are called, the code goes and creates an authorized connection, until eventually calling setReadable/Writable. After the first time being called, they are overwritten, then it re-overwrites itself back to the cached version.

The problem:

When piping has completed, we need to tear down the stream, so that the next time it's used as a stream, we go and fetch a valid token again.

The solution: bindEvents_->this.on('end')

When the end event is emitted (and complete & error (see the lines above)), this removes any bound listeners, calls Duplexify#destroy, re-initializes with the Duplexify constructor, then re-calls bindEvents_ to re-bind all of these events.

The problem:

I'm a stream fool. Put in terms of an error message:

 Error: write after end
  at writeAfterEnd (/Users/stephen/dev/gcloud-node/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:144:12)
  at File.Writable.write (/Users/stephen/dev/gcloud-node/node_modules/duplexify/node_modules/readable-stream/lib/_stream_writable.js:192:5)
  at write (_stream_readable.js:601:24)
  at flow (_stream_readable.js:610:7)
  at ReadStream.pipeOnReadable (_stream_readable.js:642:5)
  at ReadStream.emit (events.js:92:17)
  at emitReadable_ (_stream_readable.js:426:10)
  at emitReadable (_stream_readable.js:422:5)
  at readableAddChunk (_stream_readable.js:165:9)
  at ReadStream.Readable.push (_stream_readable.js:127:10)
  at onread (fs.js:1574:12)
  at callback (/Users/stephen/dev/gcloud-node/node_modules/mocha/node_modules/glob/node_modules/graceful-fs/polyfills.js:207:17)
  at Object.wrapper [as oncomplete] (fs.js:465:17)

The solution: through().pipe(writable)

setWritableStream_ is called on the first _write. It calls out to getWritableStream_, which forms an http request through the request module, writes some header information to it, then returns it. Once I get it, I pass it to setWritable.

Here's my use case from my Mocha test that triggers the above error:

var file = bucket.file('LargeFile'); // (returns a File object)
fs.createReadStream(files.big.path)
  .pipe(file)
  .on('error', done)
  .on('complete', function(fileObject) {
    assert.equal(fileObject.md5Hash, files.big.hash);
    file.delete(done);
  });

This error goes away after calling setWritable(writable) if I also do: through().pipe(writable). I have no idea why this works. I would guess it's giving the writable stream some kind of "kick-start", and if that's the case, there's likely a better/more direct way to do it.

Sorry for throwing all of this at you. I appreciate any help you can give, no matter how small or big. Feel free to send me a bill for any headache relief medication purchases I may be inducing :)

@ryanseys
Copy link
Contributor

It caches _write and _read, then overwrites them so that the first time they are called, the code goes and creates an authorized connection, until eventually calling setReadable/Writable.

Hmm, I'm a stream & duplexify noob too but I thought duplexify let you delay setting a stream to readable / writable, allowing you to complete stuff before it would actually pipe. I don't see why we need to cache the methods. That seems hacky.

@stephenplusplus
Copy link
Contributor Author

We need a trigger to know when we're being asked for data or sent it. Creating a file object isn't that trigger, as a file object isn't only usable as a stream.

Edit for clarity:

What's great with Duplexify is that it returns a stream instance that will hold off data until we set the readable/writable stream. So, that probably normally looks like:

var dup = duplexify();

asyncGetWritableStream(function(stream) {
dup.setWritable(stream);
});

fs.createReadStream('/local/file.jpg').pipe(dup);

In our case, we want to give the user a stream instance even if they don't intend to use it as one. I don't believe this is the intended use case for Duplexify, which is why I had to do the rigging noted above.

The unique thing for us is since it doesn't have to be used as a stream, we don't want to fire any API requests to get the connection & stream until we know that it is.

*/
Bucket.prototype.getMetadata = function(callback) {
callback = callback || util.noop;
this.makeReq_('GET', '', null, true, function(err, resp) {

This comment was marked as spam.

This comment was marked as spam.

This comment was marked as spam.

This comment was marked as spam.

@ryanseys
Copy link
Contributor

Is it bad to create a stream and not use it as one right away? :( I'm sorry I still don't really understand why _write and _read can't remain on the object until the object is used as a stream (or not used as one) and instead they have to be cached? Is _write and _read being dual purposed here?

@stephenplusplus
Copy link
Contributor Author

No problem, it's definitely my failure to explain properly.

The difference between this:

var dup = duplexify();
asyncGetWritableStream(function(stream) {
  dup.setWritable(stream);
});
fs.createReadStream('/local/file.jpg').pipe(dup);

and this:

var file = bucket.file('my-file.jpg');

is that in the first example, we are creating a stream object for the intentions of using it in a streaming pipeline. In the second example, we are creating a file object, with the chance of using it as a stream.

We want to wait until we know it's being used as a stream before making any API calls to form a connection and writable stream. If we did it on instantiation of File(), we could very likely be making unnecessary API calls, and forming requests that will never be written to.

An easy fix for this could look something like this:

var file = bucket.file('my-file.jpg');

fs.createReadStream('/local/file.png')
  .pipe(file.createWriteStream());

This is similar to how we are using Duplexify currently. Only when createWriteStream is called on the File object would we go and fetch the API token and prepare a writable request stream.

I personally like the API of this PR better than that way (treating File objects as Duplex streams). Everything [seems] to be working properly, but that's why I'm excited for a review to catch any silliness.

@ryanseys
Copy link
Contributor

Likely the recent readme changes turned this unmergable. :(

@stephenplusplus
Copy link
Contributor Author

Oops, thanks for catching that. No biggy, I'll fix that up.

@stephenplusplus
Copy link
Contributor Author

Fixed up 👍

@ryanseys
Copy link
Contributor

👍

@mafintosh
Copy link

The problem:

A user can ask for a File object without wanting to pipe data to/from it. A File object has other functionality beyond being used as a stream. Because we need to make an API request to fetch a token before the stream can be used, we need to wait until we know they're going to be using this as a stream.

The solution: bindEvents_

This is called at the instantiation of a File object. It caches _write and _read, then overwrites them so that the first time they are called, the code goes and creates an authorized connection, until eventually calling setReadable/Writable. After the first time being called, they are overwritten, then it re-overwrites itself back to the cached version.

I've had this problem before. It would be cool to create/find a lazy-stream module that solves the problem in the general case. Your solution seems fine to me though :)

The problem:

When piping has completed, we need to tear down the stream, so that the next time it's used as a stream, we go and fetch a valid token again.

Does mean you can do stuff like this?

var file = bucket.file('my-file')

file.on('data', function(data) {
  // ... read data ..
})
file.on('end', function() {
  file.on('data', function(data) {
    // .. read the data again?
  })
})

As in you can reuse the same file object as multiple streams implicitly?

If that is the case I would prefer a file.createReadStream() / file.createWriteStream() method since the above code seems a bit magic to me. I'm also not sure if we run into weird territory in regards to streams when we reinitialize the stream constructors.

Another way to solve this would be to simply reinitialize the file if you want a new stream

var file1 = bucket.file('my-file')
file1.pipe(...)

var file2 = bucket.file('my-file') // just create a new file object if you want to pipe it again
file2.pipe(...)

That way we can keep the duplex api without it becoming too hackish (the cost of recreating the file object seems negligible anyways).

The problem:

I'm a stream fool. Put in terms of an error message:

You are not a fool :)
The reason because this works is because of some crazy logic in the the request module.
Basically the request module detects whether or not it is being piped to and if not it just ends the writable end of the stream right away. Your empty pipe makes the writable end stay open.

See:
https://github.com/mikeal/request/blob/master/request.js#L628-L632
https://github.com/mikeal/request/blob/master/request.js#L679-L683

Sorry for throwing all of this at you. I appreciate any help you can give, no matter how small or big. Feel > free to send me a bill for any headache relief medication purchases I may be inducing :)

No problem at all! Glad to see more people getting into streams :)

General issue:

https://github.com/stephenplusplus/gcloud-node/blob/spp--storage-refactor/lib/storage/file.js#L410
You should not emit end yourself as that is a core stream event that is emitted when the readable part ends

@stephenplusplus
Copy link
Contributor Author

If that is the case I would prefer a file.createReadStream() / file.createWriteStream() method since the above code seems a bit magic to me.

I think that's a good idea. I like file being the stream for the easiest use possible, but it's probably better to force a user to be more direct with their intentions. Plus, doing this saves us the step of overwriting _read and _write - instead using createReadStream and createWriteStream as the trigger to fetch a token.

Your empty pipe makes the writable end stay open.

Wow, interesting. I definitely wouldn't have figured that out. Is there a better solution available or a typical way to handle this?

Thank you very much for the review! I'll make these changes and re-ping if you want to take another look, but don't feel obligated. You've been a huge help already!

@stephenplusplus
Copy link
Contributor Author

Pushed an update that removes the magic: d17d6c5

A file stream must be created on demand now:

var file = bucket.file('my-file');

file.createReadStream().pipe(/*...*/)

Docs are updated: http://stephenplusplus.github.io/gcloud-node/#/docs/master/storage/file

Also, I made https://github.com/stephenplusplus/stream-events to attempt to handle broadcasting 'writing' and 'reading' when a stream invokes _read and _write 💃 (not used in our app)

@stephenplusplus
Copy link
Contributor Author

Re: my earlier question: "Is there a better solution available or a typical way to handle this?"

Here's what I did:

- through().pipe(writable);
+ dup().pipe(writable);

I ended up ditching through as a dependency, instead just using what we already have, Duplexify, to create a simple stream.

@ryanseys
Copy link
Contributor

Aww, sad to see my magic file idea isn't very ideal. It's a little wonky that you have to force writable on request to stay open, would that be considered a bug in request? Is there any guidelines as what to do as a dual-purposed (stream and general object) object? We're effectively trying to do weird stuff like request does here. Request can be piped, be piped to, or neither, kinda like file should have been done. But I agree, that it should be more ephemeral so you can't pipe after piping. That'd be weird.

That all being said, I don't want our codebase to end up like requests :P At this point I'm just a bystander trying to learn streams.

stephenplusplus added a commit that referenced this pull request Oct 20, 2014
sofisl pushed a commit that referenced this pull request Nov 11, 2022
sofisl pushed a commit that referenced this pull request Nov 11, 2022
sofisl pushed a commit that referenced this pull request Nov 11, 2022
This PR was generated using Autosynth. 🌈

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: googleapis/synthtool@05de3e1
sofisl pushed a commit that referenced this pull request Nov 11, 2022
sofisl added a commit that referenced this pull request Nov 11, 2022
* feat: Etags in Secret Manager

Users can now use etags for optimistic concurrency control when modifying Secret or SecretVersion.

PiperOrigin-RevId: 373836373

Source-Link: googleapis/googleapis@bff8074

Source-Link: googleapis/googleapis-gen@174c036

* 🦉 Updates from OwlBot

* 🦉 Updates from OwlBot

Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
Co-authored-by: sofisl <55454395+sofisl@users.noreply.github.com>
sofisl pushed a commit that referenced this pull request Nov 11, 2022
[![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.

---

 - [ ] <!-- rebase-check -->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-billing).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzMi4yNDEuMTEiLCJ1cGRhdGVkSW5WZXIiOiIzNC45LjIifQ==-->
sofisl added a commit that referenced this pull request Nov 11, 2022
sofisl pushed a commit that referenced this pull request Nov 11, 2022
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [webpack-cli](https://togithub.com/webpack/webpack-cli) | devDependencies | major | [`^3.3.10` -> `^4.0.0`](https://renovatebot.com/diffs/npm/webpack-cli/3.3.12/4.0.0) |

---

### Release Notes

<details>
<summary>webpack/webpack-cli</summary>

### [`v4.0.0`](https://togithub.com/webpack/webpack-cli/blob/master/CHANGELOG.md#&#8203;400-httpsgithubcomwebpackwebpack-clicomparewebpack-cli400-rc1webpack-cli400-2020-10-10)

[Compare Source](https://togithub.com/webpack/webpack-cli/compare/v3.3.12...webpack-cli@4.0.0)

##### Bug Fixes

-   add compilation lifecycle in watch instance ([#&#8203;1903](https://togithub.com/webpack/webpack-cli/issues/1903)) ([02b6d21](https://togithub.com/webpack/webpack-cli/commit/02b6d21eaa20166a7ed37816de716b8fc22b756a))
-   cleanup `package-utils` package ([#&#8203;1822](https://togithub.com/webpack/webpack-cli/issues/1822)) ([fd5b92b](https://togithub.com/webpack/webpack-cli/commit/fd5b92b3cd40361daec5bf4486e455a41f4c9738))
-   cli-executer supplies args further up ([#&#8203;1904](https://togithub.com/webpack/webpack-cli/issues/1904)) ([097564a](https://togithub.com/webpack/webpack-cli/commit/097564a851b36b63e0a6bf88144997ef65aa057a))
-   exit code for validation errors ([59f6303](https://togithub.com/webpack/webpack-cli/commit/59f63037fcbdbb8934b578b9adf5725bc4ae1235))
-   exit process in case of schema errors ([71e89b4](https://togithub.com/webpack/webpack-cli/commit/71e89b4092d953ea587cc4f606451ab78cbcdb93))

##### Features

-   assign config paths in build dependencies in cache config ([#&#8203;1900](https://togithub.com/webpack/webpack-cli/issues/1900)) ([7e90f11](https://togithub.com/webpack/webpack-cli/commit/7e90f110b119f36ef9def4f66cf4e17ccf1438cd))

</details>

---

### 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.

---

 - [ ] <!-- rebase-check -->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#github/googleapis/nodejs-talent).
sofisl pushed a commit that referenced this pull request Nov 11, 2022
* chore: remove unused imports

PiperOrigin-RevId: 437796977

Source-Link: googleapis/googleapis@9346947

Source-Link: googleapis/googleapis-gen@6af642d
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiNmFmNjQyZDk4MjgyZmYzMTMxMGJkNjg2ZDIxYWRiMWQyMDdmMzhhNiJ9

* 🦉 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 <gcf-owl-bot[bot]@users.noreply.github.com>
sofisl added a commit that referenced this pull request Nov 16, 2022
* docs: use the jsdoc-fresh theme (#190)

* docs: document apiEndpoint over servicePath (#191)

* fix: allow calls with no request, add JSON proto

* chore: release 1.3.1 (#195)

* updated CHANGELOG.md [ci skip]

* updated package.json [ci skip]

* updated samples/package.json [ci skip]

* fix: update retry code settings per API call (#196)

* chore(deps): update dependency yargs to v14

* fix: use process versions object for client header (#199)

* docs: update function documentation

* fix(docs): stop redirecting reference docs to anchor link

* chore: release 1.3.2 (#200)

* feat: load protos from JSON, grpc-fallback support

* [CHANGE ME] Re-generated  to pick up changes in the API or client library generator.

* fixes

* fix webpack.config.js

* fix protos

* chore(deps): update dependency eslint-plugin-node to v10 (#205)

* update .nycrc ignore rules (#206)

* chore: release 1.4.0 (#204)

* updated CHANGELOG.md [ci skip]

* updated package.json [ci skip]

* updated samples/package.json [ci skip]

* feat: .d.ts for protos (#210)

* fix: use compatible version of google-gax

* fix: use compatible version of google-gax

* fix: use gax v1.6.3

* chore: update pull request template (#214)

* chore: update CONTRIBUTING.md and make releaseType node (#219)

* chore: release 1.5.0 (#217)

* updated CHANGELOG.md [ci skip]

* updated package.json [ci skip]

* updated samples/package.json [ci skip]

* fix(deps): bump google-gax to 1.7.5 (#220)

* chore: release 1.5.1 (#222)

* chore: exclude gapic files from code coverage (#228)

* fix(docs): snippets are now replaced in jsdoc comments (#230)

* fix: import long into proto ts declaration file (#231)

* chore: release 1.5.2 (#232)

* docs: add copyright header (#233)

* fix(docs): bump release level to GA (#235)

* chore: update license header for protos.js (#236)

* chore(deps): update dependency yargs to v15 (#238)

* chore: release 1.5.3 (#237)

* feat(samples): add asymmetric samples (#241)

* docs: add asymmetric samples to README files (#247)

* docs: update jsdoc license/samples-README (#249)

* build: use c8 for coverage (#252)

* refactor: use explicit mocha imports

* refactor: use explicit mocha imports

* fixy

* build: add list of tracked files to synth.metadata

* chore(deps): update dependency eslint-plugin-node to v11 (#253)

* chore: release 1.6.0 (#245)

* build: add "**/*.d.ts" to coverage ignore rules

* fix: updated proto annotations (#258)

* [CHANGE ME] Re-generated  to pick up changes in the API or client library generator.

* test: increase timeout for before and after block

Co-authored-by: Alexander Fenster <github@fenster.name>

* chore: release 1.6.1

* updated CHANGELOG.md [ci skip]

* updated package.json [ci skip]

* updated samples/package.json [ci skip]

* chore(deps): update dependency mocha to v7 (#260)

* fix: protos: removed extra resource annotations, no code changes

* chore: release 1.6.2 (#262)

* docs: update license headers

* chore: clear synth.metadata

* chore: regenerate synth.metadata (#268)

* chore: updated resource annotation in proto file

* chore: skip img.shields.io in docs test

* test: modernize mocha config (#270)

* chore(deps): update dependency linkinator to v2

* fix: proto messages now accept strings for enums

Co-authored-by: Alexander Fenster <github@fenster.name>

* chore: release 1.6.3 (#274)

* 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

* chore: update jsdoc.js (#281)

* chore: update .jsdoc.js by add protos and remove double quotes (#282)

* chore: updated proto annotations

* feat!: move to typescript code generation (#264)

* update from synthtool

* move to typescript

* update synth script and run it

* convert system-test to ts

* try this

* lint

* regenerate to pick up change for path template

* update client

* gts fix

* update copyright

* 2020 copyright

* try this

* fix unit test

* re-generate

* make sample test work

* remove sample test for IAM policy

* liny

* remove doc, revert sample-test

* add iam client to kmsClient

* update sample-test

* lint

* makes samples test work

* lint

* update

* convert system-tets to ts

* rerun synthtool

* sample test

* fix

* mix-in

* update synthtool

* run synthtool & test

* test

* manual add IamClient and pass unit tests

* clean up

* npm run lint

* test samples

* manual iam_service_config

* ts client interface overload

* test

* test

* return value

* return list

* clean up

* remove console warn

* sample-test work!

* require module correctly

* synthtool change

* include all files in tarball, system-test passes

* synthtool, all tests green

* merge

* fix for system-test

* feedback

* update dependencies

* license aligned for helper.ts

* remove helper.ts, tslint from synth.py

* move script around

* add comments to iamclient & synth.py

* rename helperMethods.tmpl

* rerun ynthtool

* give auth the type

* re set up scripts in package.json

* add meaningful comment

* add comments in helperMethods.tmpl

* test

* import * as packagejson from ../package.json;

* remove any

* run synthtool

* feat: deferred client initialization (#286)

This PR includes changes from https://github.com/googleapis/gapic-generator-typescript/pull/317
that will move the asynchronous initialization and authentication from the client constructor
to an `initialize()` method. This method will be automatically called when the first RPC call
is performed.

The client library usage has not changed, there is no need to update any code.

If you want to make sure the client is authenticated _before_ the first RPC call, you can do
```js
await client.initialize();
```
manually before calling any client method.

* build: update linkinator config (#287)

* build(tests): fix coveralls and enable build cop (#288)

* docs: mention templates in contributing section of README (#290)

* chore: update UUID to latest (#293)

There are some slight breaking changes in the newest UUID.

* docs: document version support goals (#297)

* chore: regenerate the code

Co-authored-by: Alexander Fenster <github@fenster.name>

* feat!: drop node8 support, support for async iterators (#300)

BREAKING CHANGE: The library now supports Node.js v10+. The last version to support Node.js v8 is tagged legacy-8 on NPM.

New feature: methods with pagination now support async iteration.

* build: set AUTOSYNTH_MULTIPLE_COMMITS=true for context aware commits (#301)

* chore(deps): update dependency @types/sinon to v9 (#302)

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.

---

 - [ ] <!-- rebase-check -->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-kms).

* chore: remove duplicate mocha config (#304)

* fix: export explicit version in protos.js (#303)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/1630485f-7526-4afd-9c13-b5660664d6a2/targets

* feat: add support for Cloud EKM to the Cloud KMS service and resource protos (#306)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/9c94202f-63a5-4df0-9d76-871a00f99b85/targets

* chore: release 2.0.0 (#285)

* chore(deps): update dependency gts to v2.0.0 (#308)

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

<details>
<summary>google/gts</summary>

### [`v2.0.0`](https://togithub.com/google/gts/blob/master/CHANGELOG.md#&#8203;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 ([#&#8203;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 ([#&#8203;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 ([#&#8203;459](https://www.github.com/google/gts/issues/459)) ([96aa84a](https://www.github.com/google/gts/commit/96aa84a0a42181046daa248750cc8fef0c320619))
-   override require-atomic-updates ([#&#8203;468](https://www.github.com/google/gts/issues/468)) ([8105c93](https://www.github.com/google/gts/commit/8105c9334ee5104b05f6b1b2f150e51419637262))
-   prefer single quotes if possible ([#&#8203;475](https://www.github.com/google/gts/issues/475)) ([39a2705](https://www.github.com/google/gts/commit/39a2705e51b4b6329a70f91f8293a2d7a363bf5d))
-   use eslint instead of tslint ([#&#8203;400](https://www.github.com/google/gts/issues/400)) ([b3096fb](https://www.github.com/google/gts/commit/b3096fbd5076d302d93c2307bf627e12c423e726))

##### Bug Fixes

-   use .prettierrc.js ([#&#8203;437](https://www.github.com/google/gts/issues/437)) ([06efa84](https://www.github.com/google/gts/commit/06efa8444cdf1064b64f3e8d61ebd04f45d90b4c))
-   **deps:** update dependency chalk to v4 ([#&#8203;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 ([#&#8203;426](https://www.github.com/google/gts/issues/426)) ([a394b7c](https://www.github.com/google/gts/commit/a394b7c1f80437f25017ca5c500b968ebb789ece))
-   **deps:** update dependency execa to v4 ([#&#8203;427](https://www.github.com/google/gts/issues/427)) ([f42ef36](https://www.github.com/google/gts/commit/f42ef36709251553342e655e287e889df72ee3e3))
-   **deps:** update dependency prettier to v2 ([#&#8203;464](https://www.github.com/google/gts/issues/464)) ([20ef43d](https://www.github.com/google/gts/commit/20ef43d566df17d3c93949ef7db3b72ee9123ca3))
-   disable no-use-before-define ([#&#8203;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 ([#&#8203;403](https://www.github.com/google/gts/issues/403)) ([57393b7](https://www.github.com/google/gts/commit/57393b74c6cf299e8ae09311f0382226b8baa3e3))
-   **deps:** upgrade to meow 6.x ([#&#8203;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 ([#&#8203;440](https://www.github.com/google/gts/issues/440)) ([8bd78c4](https://www.github.com/google/gts/commit/8bd78c4c78526a72400f618a95a987d2a7c1a8db))
-   disable empty-function check ([#&#8203;467](https://www.github.com/google/gts/issues/467)) ([6455d7a](https://www.github.com/google/gts/commit/6455d7a9d227320d3ffe1b00c9c739b846f339a8))
-   drop support for node 8 ([#&#8203;422](https://www.github.com/google/gts/issues/422)) ([888c686](https://www.github.com/google/gts/commit/888c68692079065f38ce66ec84472f1f3311a050))
-   emit .prettierrc.js with init ([#&#8203;462](https://www.github.com/google/gts/issues/462)) ([b114614](https://www.github.com/google/gts/commit/b114614d22ab5560d2d1dd5cb6695968cc80027b))
-   enable trailing comma ([#&#8203;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 ([#&#8203;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) ([#&#8203;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 ([#&#8203;389](https://www.github.com/google/gts/issues/389)) ([1ce0f45](https://www.github.com/google/gts/commit/1ce0f450677e143a27efc39def617d13c66503e8))
-   **deps:** update dependency inquirer to v7 ([#&#8203;377](https://www.github.com/google/gts/issues/377)) ([bf2c349](https://www.github.com/google/gts/commit/bf2c349b2208ac63e551542599ac9cd27b461338))
-   **deps:** update dependency rimraf to v3 ([#&#8203;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 ([#&#8203;353](https://www.github.com/google/gts/issues/353)) ([59e6aa8](https://www.github.com/google/gts/commit/59e6aa8580a2f8e9457d2d2b6fa9e18e86347592))

</details>

---

### 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.

---

 - [ ] <!-- rebase-check -->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-kms).

* fix: remove eslint, update gax, fix generated protos, run the generator (#309)

Run the latest version of the generator, update google-gax, update gts, and remove direct dependencies on eslint.

* build: remove unused codecov config (#311)

* chore: update lint ignore files (#312)

* feat: clean up synth.py by using IAM service option from generator (#305)

* remove iam from protos

* remove iam config

* sample test

* change it back

* all pass!

* clean

* update callback

* remove hacks in synth.py

* run synthtool

* remove iam protos/

* clean metadata

* updates

* feedback

Co-authored-by: Alexander Fenster <fenster@google.com>

* chore: remove tslint.json (#314)

* chore: remove unused dev packages (#317)

* chore: update lint rules and synth (#316)

* chore(deps): update dependency ts-loader to v7 (#319)

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

<details>
<summary>TypeStrong/ts-loader</summary>

### [`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 [@&#8203;sheetalkamat](https://togithub.com/sheetalkamat)!
-   Following the end of life of Node 8, `ts-loader` no longer supports Node 8 **BREAKING CHANGE**

</details>

---

### 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.

---

 - [ ] <!-- rebase-check -->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-kms).

* chore(deps): update dependency null-loader to v4 (#320)

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

<details>
<summary>webpack-contrib/null-loader</summary>

### [`v4.0.0`](https://togithub.com/webpack-contrib/null-loader/blob/master/CHANGELOG.md#&#8203;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`

</details>

---

### 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.

---

 - [ ] <!-- rebase-check -->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-kms).

* build: use codecov's action, now that it's authless (#499) (#321)

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

* build: adopt changes to generator formatter (#322)

* chore: update npm scripts and synth.py (#323)

Update npm scripts: add clean, prelint, prefix; make sure that lint and fix are set properly. Use post-process feature of synthtool.

* feat(samples): add new samples (#324)

* docs: remove exception from linkinator.json (#326)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/337a0524-6174-4d44-b6dc-f0ef2c4a7e44/targets

* chore: update UUID to latest (#328)

* fix: regen protos and tests, fix formatting (#329)

* fix: synth.py clean up for multiple version (#330)

* build: do not fail builds on codecov errors (#528) (#331)

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

* fix: update common protos and fix synth (#336)

* chore: release 2.1.0 (#313)

* 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>

* fix: samples-test script (#338)

* [CHANGE ME] Re-generated to pick up changes from self. (#341)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/94b5c3f0-0503-436d-9be8-c1804aaa194c/targets

- [ ] To automatically regenerate this PR, check this box.

* chore: release 2.1.1 (#340)

* build(secrets): begin migration to secret manager from keystore (#343)

Source-Author: Benjamin E. Coe <bencoe@google.com>
Source-Date: Mon Jun 8 09:51:11 2020 -0700
Source-Repo: googleapis/synthtool
Source-Sha: 1c92077459db3dc50741e878f98b08c6261181e0
Source-Link: https://github.com/googleapis/synthtool/commit/1c92077459db3dc50741e878f98b08c6261181e0

* chore(deps): update dependency mocha to v8 (#344)

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

<details>
<summary>mochajs/mocha</summary>

### [`v8.0.1`](https://togithub.com/mochajs/mocha/blob/master/CHANGELOG.md#&#8203;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

-   [#&#8203;4328](https://togithub.com/mochajs/mocha/issues/4328): Fix `--parallel` when combined with `--watch` ([**@&#8203;boneskull**](https://togithub.com/boneskull))

### [`v8.0.0`](https://togithub.com/mochajs/mocha/blob/master/CHANGELOG.md#&#8203;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 [**@&#8203;giltayar**](https://togithub.com/giltayar) and [**@&#8203;nicojs**](https://togithub.com/nicojs) to the maintenance team!

#### :boom: Breaking Changes

-   [#&#8203;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 ([**@&#8203;UlisesGascon**](https://togithub.com/UlisesGascon))

-   [#&#8203;4175](https://togithub.com/mochajs/mocha/issues/4175): Having been deprecated with a warning since v7.0.0, **`mocha.opts` is no longer supported** ([**@&#8203;juergba**](https://togithub.com/juergba))

    :sparkles: **WORKAROUND:** Replace `mocha.opts` with a [configuration file](https://mochajs.org/#configuring-mocha-nodejs).

-   [#&#8203;4260](https://togithub.com/mochajs/mocha/issues/4260): Remove `enableTimeout()` (`this.enableTimeout()`) from the context object ([**@&#8203;craigtaub**](https://togithub.com/craigtaub))

    :sparkles: **WORKAROUND:** Replace usage of `this.enableTimeout(false)` in your tests with `this.timeout(0)`.

-   [#&#8203;4315](https://togithub.com/mochajs/mocha/issues/4315): The `spec` option no longer supports a comma-delimited list of files ([**@&#8203;juergba**](https://togithub.com/juergba))

    :sparkles: **WORKAROUND**: Use an array instead (e.g., `"spec": "foo.js,bar.js"` becomes `"spec": ["foo.js", "bar.js"]`).

-   [#&#8203;4309](https://togithub.com/mochajs/mocha/issues/4309): Drop support for Node.js v13.x line, which is now End-of-Life ([**@&#8203;juergba**](https://togithub.com/juergba))

-   [#&#8203;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 ([**@&#8203;arvidOtt**](https://togithub.com/arvidOtt))

-   [#&#8203;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 ([**@&#8203;juergba**](https://togithub.com/juergba))

-   [#&#8203;4178](https://togithub.com/mochajs/mocha/issues/4178): Remove previously soft-deprecated APIs ([**@&#8203;wnghdcjfe**](https://togithub.com/wnghdcjfe)):
    -   `Mocha.prototype.ignoreLeaks()`
    -   `Mocha.prototype.useColors()`
    -   `Mocha.prototype.useInlineDiffs()`
    -   `Mocha.prototype.hideDiff()`

#### :tada: Enhancements

-   [#&#8203;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)) ([**@&#8203;boneskull**](https://togithub.com/boneskull))

    :exclamation: See also [#&#8203;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_

-   [#&#8203;4304](https://togithub.com/mochajs/mocha/issues/4304): `--require` now works with ES modules ([**@&#8203;JacobLey**](https://togithub.com/JacobLey))

-   [#&#8203;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!_ ([**@&#8203;giltayar**](https://togithub.com/giltayar))

#### :book: Documentation

-   [#&#8203;4246](https://togithub.com/mochajs/mocha/issues/4246): Add documentation for parallel mode and Root Hook plugins ([**@&#8203;boneskull**](https://togithub.com/boneskull))

#### :bug: Fixes

(All bug fixes in Mocha v8.0.0 are also breaking changes, and are listed above)

</details>

---

### 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.

---

 - [ ] <!-- rebase-check -->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-kms).

* chore(nodejs_templates): add script logging to node_library populate-secrets.sh (#345)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/e306327b-605f-4c07-9420-c106e40c47d5/targets

- [ ] To automatically regenerate this PR, check this box.

Source-Link: https://github.com/googleapis/synthtool/commit/e7034945fbdc0e79d3c57f6e299e5c90b0f11469

* fix: handle fallback option properly

autosynth cannot find the source of changes triggered by earlier changes in this
        repository, or by version upgrades to tools such as linters.

* chore: release 2.1.2 (#347)

* 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>

* chore: update node issue template (#349)

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

* docs: change relative URLs to absolute URLs to fix broken links. (#348)

PiperOrigin-RevId: 314805551

Source-Author: Google APIs <noreply@google.com>
Source-Date: Thu Jun 4 14:36:25 2020 -0700
Source-Repo: googleapis/googleapis
Source-Sha: ef180e07d360d86ce0f71c448edffbf6b7ceb8c9
Source-Link: https://github.com/googleapis/googleapis/commit/ef180e07d360d86ce0f71c448edffbf6b7ceb8c9

Co-authored-by: Justin Beckwith <justin.beckwith@gmail.com>

* build: add config .gitattributes (#350)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/2a81bca4-7abd-4108-ac1f-21340f858709/targets

- [ ] To automatically regenerate this PR, check this box.

Source-Link: https://github.com/googleapis/synthtool/commit/dc9caca650c77b7039e2bbc3339ffb34ae78e5b7

* build: use bazel build (#352)

* typeo: typeo in .gitattribute (#355)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/cc99acfa-05b8-434b-9500-2f6faf2eaa02/targets

- [ ] To automatically regenerate this PR, check this box.

Source-Link: https://github.com/googleapis/synthtool/commit/799d8e6522c1ef7cb55a70d9ea0b15e045c3d00b

* chore(deps): update dependency ts-loader to v8 (#354)

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

<details>
<summary>TypeStrong/ts-loader</summary>

### [`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 [@&#8203;sheetalkamat](https://togithub.com/sheetalkamat)!
-   `ts-loader` now supports TypeScript 3.6 and greater **BREAKING CHANGE**

</details>

---

### 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.

---

 - [ ] <!-- rebase-check -->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-kms).

* chore(deps): update dependency @types/mocha to v8 (#356)

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.

---

 - [ ] <!-- rebase-check -->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-kms).

* chore: update generated protos.js (#358)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/9c6207e5-a7a6-4e44-ab6b-91751e0230b1/targets

- [ ] To automatically regenerate this PR, check this box.

* build: missing closing paren in publish script (#359)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/9c6207e5-a7a6-4e44-ab6b-91751e0230b1/targets

- [ ] To automatically regenerate this PR, check this box.

Source-Link: https://github.com/googleapis/synthtool/commit/d82deccf657a66e31bd5da9efdb96c6fa322fc7e

* chore: add config files for cloud-rad for node.js, delete Node 8 templates (#363)

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
Source-Link: https://github.com/googleapis/synthtool/commit/388e10f5ae302d3e8de1fac99f3a95d1ab8f824a

* chore: add dev dependencies for cloud-rad ref docs (#364)

* build: rename _toc to toc (#365)

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

* chore: move gitattributes files to node templates (#366)

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

* chore(node): fix kokoro build path for cloud-rad (#367)

Source-Author: F. Hinkelmann <franziska.hinkelmann@gmail.com>
Source-Date: Wed Jul 29 00:28:42 2020 -0400
Source-Repo: googleapis/synthtool
Source-Sha: 89d431fb2975fc4e0ed24995a6e6dfc8ff4c24fa
Source-Link: https://github.com/googleapis/synthtool/commit/89d431fb2975fc4e0ed24995a6e6dfc8ff4c24fa

* build: update protos (#368)

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.

* docs: add links to the CHANGELOG from the README.md for Java and Node (#369)

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

* build: --credential-file-override is no longer required (#371)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/4de22315-84b1-493d-8da2-dfa7688128f5/targets

- [ ] To automatically regenerate this PR, check this box.

Source-Link: https://github.com/googleapis/synthtool/commit/94421c47802f56a44c320257b2b4c190dc7d6b68

* chore: update cloud rad kokoro build job (#373)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/b742586e-df31-4aac-8092-78288e9ea8e7/targets

- [ ] To automatically regenerate this PR, check this box.

Source-Link: https://github.com/googleapis/synthtool/commit/bd0deaa1113b588d70449535ab9cbf0f2bd0e72f

* build: use gapic-generator-typescript v.1.0.7, and add client integrity verification fields to protos (#372)

* build: use gapic-generator-typescript v1.0.7.

This new generator will bring some changes to the generated code across all libraries, but the behavior will only change for nodejs-logging and nodejs-pubsub (those two libraries that use request batching). For other libraries, the changes should be minor (the createApiCall call is simplified) and it should be safe to merge them. Please talk to @alexander-fenster if you have any questions.

PiperOrigin-RevId: 325949033

Source-Author: Google APIs <noreply@google.com>
Source-Date: Mon Aug 10 21:11:13 2020 -0700
Source-Repo: googleapis/googleapis
Source-Sha: 94006b3cb8d2fb44703cf535da15608eed6bf7db
Source-Link: https://github.com/googleapis/googleapis/commit/94006b3cb8d2fb44703cf535da15608eed6bf7db

* Add client integrity verification fields to the KMS protos

PiperOrigin-RevId: 326100874

Source-Author: Google APIs <noreply@google.com>
Source-Date: Tue Aug 11 14:22:10 2020 -0700
Source-Repo: googleapis/googleapis
Source-Sha: b40e4533f841c96aac1d9d7d342514d146b5b4cb
Source-Link: https://github.com/googleapis/googleapis/commit/b40e4533f841c96aac1d9d7d342514d146b5b4cb

Co-authored-by: sofisl <55454395+sofisl@users.noreply.github.com>

* build: perform publish using Node 12 (#374)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/c36c6dbc-ab79-4f17-b70b-523b420b2a70/targets

- [ ] To automatically regenerate this PR, check this box.

Source-Link: https://github.com/googleapis/synthtool/commit/5747555f7620113d9a2078a48f4c047a99d31b3e

* chore: start tracking obsolete files (#376)

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.

* build: move system and samples test from Node 10 to Node 12 (#377)

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

* build: track flaky tests for "nightly", add new secrets for tagging (#379)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/a5e2285a-d4b2-4f1e-81b4-60b8e55ed328/targets

- [ ] To automatically regenerate this PR, check this box.

Source-Link: https://github.com/googleapis/synthtool/commit/8cf6d2834ad14318e64429c3b94f6443ae83daf9

* build(test): recursively find test files; fail on unsupported dependency versions (#383)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/396d1a63-c8ed-42ae-811f-d2b08d6e2089/targets

- [ ] To automatically regenerate this PR, check this box.

Source-Link: https://github.com/googleapis/synthtool/commit/fdd03c161003ab97657cc0218f25c82c89ddf4b6

* chore: update bucket for cloud-rad (#385)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/fca23fa0-3627-48c1-abed-db8e850d5a5a/targets

- [ ] To automatically regenerate this PR, check this box.

Source-Link: https://github.com/googleapis/synthtool/commit/079dcce498117f9570cebe6e6cff254b38ba3860

* build(node_library): migrate to Trampoline V2 (#386)

Source-Author: Takashi Matsuo <tmatsuo@google.com>
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

* chore(deps): update dependency webpack-cli to v4 (#389)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [webpack-cli](https://togithub.com/webpack/webpack-cli) | devDependencies | major | [`^3.3.11` -> `^4.0.0`](https://renovatebot.com/diffs/npm/webpack-cli/3.3.12/4.0.0) |

---

### Release Notes

<details>
<summary>webpack/webpack-cli</summary>

### [`v4.0.0`](https://togithub.com/webpack/webpack-cli/blob/master/CHANGELOG.md#&#8203;400-httpsgithubcomwebpackwebpack-clicomparewebpack-cli400-rc1webpack-cli400-2020-10-10)

[Compare Source](https://togithub.com/webpack/webpack-cli/compare/v3.3.12...webpack-cli@4.0.0)

##### Bug Fixes

-   add compilation lifecycle in watch instance ([#&#8203;1903](https://togithub.com/webpack/webpack-cli/issues/1903)) ([02b6d21](https://togithub.com/webpack/webpack-cli/commit/02b6d21eaa20166a7ed37816de716b8fc22b756a))
-   cleanup `package-utils` package ([#&#8203;1822](https://togithub.com/webpack/webpack-cli/issues/1822)) ([fd5b92b](https://togithub.com/webpack/webpack-cli/commit/fd5b92b3cd40361daec5bf4486e455a41f4c9738))
-   cli-executer supplies args further up ([#&#8203;1904](https://togithub.com/webpack/webpack-cli/issues/1904)) ([097564a](https://togithub.com/webpack/webpack-cli/commit/097564a851b36b63e0a6bf88144997ef65aa057a))
-   exit code for validation errors ([59f6303](https://togithub.com/webpack/webpack-cli/commit/59f63037fcbdbb8934b578b9adf5725bc4ae1235))
-   exit process in case of schema errors ([71e89b4](https://togithub.com/webpack/webpack-cli/commit/71e89b4092d953ea587cc4f606451ab78cbcdb93))

##### Features

-   assign config paths in build dependencies in cache config ([#&#8203;1900](https://togithub.com/webpack/webpack-cli/issues/1900)) ([7e90f11](https://togithub.com/webpack/webpack-cli/commit/7e90f110b119f36ef9def4f66cf4e17ccf1438cd))

</details>

---

### 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.

---

 - [ ] <!-- rebase-check -->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#github/googleapis/nodejs-kms).

* chore(deps): update dependency webpack to v5 (#388)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [webpack](https://togithub.com/webpack/webpack) | devDependencies | major | [`^4.42.0` -> `^5.0.0`](https://renovatebot.com/diffs/npm/webpack/4.44.2/5.1.0) |

---

### Release Notes

<details>
<summary>webpack/webpack</summary>

### [`v5.1.0`](https://togithub.com/webpack/webpack/releases/v5.1.0)

[Compare Source](https://togithub.com/webpack/webpack/compare/v5.0.0...v5.1.0)

### Features

-   expose `webpack` property from `Compiler`
-   expose `cleverMerge`, `EntryOptionPlugin`, `DynamicEntryPlugin`

### Bugfixes

-   missing `require("..").xxx` in try-catch produces a warning instead of an error now
-   handle reexports in concatenated modules correctly when they are side-effect-free
-   fix incorrect deprecation message for ModuleTemplate.hooks.hash

### [`v5.0.0`](https://togithub.com/webpack/webpack/releases/v5.0.0)

[Compare Source](https://togithub.com/webpack/webpack/compare/v4.44.2...v5.0.0)

[Announcement and changelog](https://webpack.js.org/blog/2020-10-10-webpack-5-release/)

</details>

---

### 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.

---

 - [ ] <!-- rebase-check -->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#github/googleapis/nodejs-kms).

* build: only check --engine-strict for production deps (#390)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/1c7a19e0-0642-4da9-a86e-676ae8965b89/targets

- [ ] To automatically regenerate this PR, check this box.

Source-Link: https://github.com/googleapis/synthtool/commit/5451633881133e5573cc271a18e73b18caca8b1b

* chore: clean up Node.js TOC for cloud-rad (#392)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/bea77be5-6371-49cb-b1fc-88500cc4fade/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

* docs: updated code of conduct (includes update to actions) (#396)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/87546435-a6be-41b1-b439-16b7d6c5df65/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

* build(node): add KOKORO_BUILD_ARTIFACTS_SUBDIR to env (#397)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/325cd597-d8fe-40d6-aad1-01bd299fa976/targets

- [ ] To automatically regenerate this PR, check this box.

Source-Link: https://github.com/googleapis/synthtool/commit/ba9918cd22874245b55734f57470c719b577e591

* build: add v1.KeyManagementServiceClient type (#398)

* fix: do not modify options object, use defaultScopes (#399)

Regenerated the library using
[gapic-generator-typescript](https://github.com/googleapis/gapic-generator-typescript)
v1.2.1.

* chore: release 2.1.3 (#400)

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>

* fix(browser): check for fetch on window (#404)

* docs: spelling correction for "targetting" (#406)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/4ae6b577-4a5f-4ba7-885b-7384aaed05b5/targets

- [ ] To automatically regenerate this PR, check this box.

Source-Link: https://github.com/googleapis/synthtool/commit/15013eff642a7e7e855aed5a29e6e83c39beba2a

* chore: release 2.1.4 (#405)

:robot: I have created a release \*beep\* \*boop\* 
---
### [2.1.4](https://www.github.com/googleapis/nodejs-kms/compare/v2.1.3...v2.1.4) (2020-11-25)


### Bug Fixes

* **browser:** check for fetch on window ([#404](https://www.github.com/googleapis/nodejs-kms/issues/404)) ([96a90e3](https://www.github.com/googleapis/nodejs-kms/commit/96a90e3bea1c8b7e8e2d57cc1eb6204ed326b915))
---


This PR was generated with [Release Please](https://github.com/googleapis/release-please).

* chore: generate GAPIC metadata JSON file (#407)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/4e7abbc6-c648-4473-9499-aa96f63c63a8/targets

- [ ] To automatically regenerate this PR, check this box.

PiperOrigin-RevId: 345596855
Source-Link: https://github.com/googleapis/googleapis/commit/d189e871205fea665a9648f7c4676f027495ccaf

* docs: add instructions for authenticating for system tests (#410)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/910b6b4c-44a8-42e1-939c-9018f9008df4/targets

- [ ] To automatically regenerate this PR, check this box.

Source-Link: https://github.com/googleapis/synthtool/commit/363fe305e9ce34a6cd53951c6ee5f997094b54ee

* chore: update license headers (#411)

* feat: introduces style enum

* chore: release 2.2.0 (#413)

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>

* feat(samples): add integrity verification to Cloud KMS crypto samples (#409)

* chore: release 2.3.0 (#414)

:robot: I have created a release \*beep\* \*boop\* 
---
## [2.3.0](https://www.github.com/googleapis/nodejs-kms/compare/v2.2.0...v2.3.0) (2021-01-08)


### Features

* **samples:** add integrity verification to Cloud KMS crypto samples ([#409](https://www.github.com/googleapis/nodejs-kms/issues/409)) ([d2897f6](https://www.github.com/googleapis/nodejs-kms/commit/d2897f681ae409b34a50b91ea718fa9e294895c5))
---


This PR was generated with [Release Please](https://github.com/googleapis/release-please).

* refactor(nodejs): move build cop to flakybot (#415)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/79c017af-4fff-4b22-8cb4-5c2208642be6/targets

- [ ] To automatically regenerate this PR, check this box.

Source-Link: https://github.com/googleapis/synthtool/commit/57c23fa5705499a4181095ced81f0ee0933b64f6

* build: adds UNORDERED_LIST enum (#417)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/2ae671ee-21a8-4bed-96cc-bdcf6b4638b5/targets

- [ ] To automatically regenerate this PR, check this box.

* fix: do not retry on 13 INTERNAL (#418)

Fixes https://github.com/googleapis/nodejs-kms/issues/375. The malformed request triggers `13 INTERNAL` from gRPC and we should not silently retry on this code.
Committer: @alexander-fenster

PiperOrigin-RevId: 357022763

Source-Author: Google APIs <noreply@google.com>
Source-Date: Thu Feb 11 11:39:31 2021 -0800
Source-Repo: googleapis/googleapis
Source-Sha: 3f914b89ae1ef459955f470f9ccb498314ad28d5
Source-Link: https://github.com/googleapis/googleapis/commit/3f914b89ae1ef459955f470f9ccb498314ad28d5

* chore: release 2.3.1 (#419)

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>

* build: update gapic-generator-typescript to v1.2.10. (#420)

This PR was generated using Autosynth. :rainbow:

Synth log will be available here:
https://source.cloud.google.com/results/invocations/7d84eafd-4925-434f-9ffd-6407671972cb/targets

- [ ] To automatically regenerate this PR, check this box.

PiperOrigin-RevId: 361273630
Source-Link: https://github.com/googleapis/googleapis/commit/5477122b3e8037a1dc5bc920536158edbd151dc4

* chore: migrate to owl bot (#422)

generated via script

* chore(deps): update dependency sinon to v10 (#428)

[![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)) | [`^9.0.1` -> `^10.0.0`](https://renovatebot.com/diffs/npm/sinon/9.2.4/10.0.0) | [![age](https://badges.renovateapi.com/packages/npm/sinon/10.0.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/sinon/10.0.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/sinon/10.0.0/compatibility-slim/9.2.4)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/sinon/10.0.0/confidence-slim/9.2.4)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>sinonjs/sinon</summary>

### [`v10.0.0`](https://togithub.com/sinonjs/sinon/blob/master/CHANGELOG.md#&#8203;1000--2021-03-22)

[Compare Source](https://togithub.com/sinonjs/sinon/compare/v9.2.4...v10.0.0)

==================

-   Upgrade nise to 4.1.0
-   Use [@&#8203;sinonjs/eslint-config](https://togithub.com/sinonjs/eslint-config)[@&#8203;4](https://togithub.com/4) => Adopts ES2017 => Drops support for IE 11, Legacy Edge and legacy Safari

</details>

---

### 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.

---

 - [ ] <!-- rebase-check -->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#github/googleapis/nodejs-kms).

* chore(deps): update dependency @types/sinon to v10 (#438)

[![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/sinon](https://togithub.com/DefinitelyTyped/DefinitelyTyped) | [`^9.0.0` -> `^10.0.0`](https://renovatebot.com/diffs/npm/@types%2fsinon/9.0.11/10.0.0) | [![age](https://badges.renovateapi.com/packages/npm/@types%2fsinon/10.0.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@types%2fsinon/10.0.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@types%2fsinon/10.0.0/compatibility-slim/9.0.11)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@types%2fsinon/10.0.0/confidence-slim/9.0.11)](https://docs.renovatebot.com/merge-confidence/) |

---

### 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.

---

 - [ ] <!-- rebase-check -->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#github/googleapis/nodejs-kms).

* chore(deps): update dependency ts-loader to v9 (#442)

[![WhiteSource Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [ts-loader](https://togithub.com/TypeStrong/ts-loader) | [`^8.0.0` -> `^9.0.0`](https://renovatebot.com/diffs/npm/ts-loader/8.1.0/9.0.0) | [![age](https://badges.renovateapi.com/packages/npm/ts-loader/9.0.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/ts-loader/9.0.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/ts-loader/9.0.0/compatibility-slim/8.1.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/ts-loader/9.0.0/confidence-slim/8.1.0)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>TypeStrong/ts-loader</summary>

### [`v9.0.0`](https://togithub.com/TypeStrong/ts-loader/blob/master/CHANGELOG.md#v900)

[Compare Source](https://togithub.com/TypeStrong/ts-loader/compare/v8.1.0...v9.0.0)

Breaking changes:

-   minimum webpack version: 5
-   minimum node version: 12

Changes:

-   [webpack 5 migration](https://togithub.com/TypeStrong/ts-loader/pull/1251) - thanks [@&#8203;johnnyreilly](https://togithub.com/johnnyreilly), [@&#8203;jonwallsten](https://togithub.com/jonwallsten), [@&#8203;sokra](https://togithub.com/sokra), [@&#8203;appzuka](https://togithub.com/appzuka), [@&#8203;alexander-akait](https://togithub.com/alexander-akait)

</details>

---

### 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.

---

 - [ ] <!-- rebase-check -->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#github/googleapis/nodejs-kms).

* fix(deps): require google-gax v2.12.0 (#447)

* chore: new owl bot post processor docker image (#449)

gcr.io/repo-automation-bots/owlbot-nodejs:latest@sha256:f93bb861d6f12574437bb9aee426b71eafd63b419669ff0ed029f4b7e7162e3f

* fix: use require() to load JSON protos (#450)

The library is regenerated with gapic-generator-typescript v1.3.1.

Committer: @alexander-fenster
PiperOrigin-RevId: 372468161

Source-Link: https://github.com/googleapis/googleapis/commit/75880c3e6a6aa2597400582848e81bbbfac51dea

Source-Link: https://github.com/googleapis/googleapis-gen/commit/77b18044813d4c8c415ff9ea68e76e307eb8e904

* chore: update gapic-generator-typescript to v1.3.2 (#451)

Committer: @alexander-fenster
PiperOrigin-RevId: 372656503

Source-Link: https://github.com/googleapis/googleapis/commit/6fa858c6489b1bbc505a7d7afe39f2dc45819c38

Source-Link: https://github.com/googleapis/googleapis-gen/commit/d7c95df3ab1ea1b4c22a4542bad4924cc46d1388

* chore: release 2.3.2 (#448)

Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>

* chore(deps): update dependency @types/node to v14 (#454)

[![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) | [`^13.13.4` -> `^14.0.0`](https://renovatebot.com/diffs/npm/@types%2fnode/13.13.52/14.17.0) | [![age](https://badges.renovateapi.com/packages/npm/@types%2fnode/14.17.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/@types%2fnode/14.17.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/@types%2fnode/14.17.0/compatibility-slim/13.13.52)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/@types%2fnode/14.17.0/confidence-slim/13.13.52)](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.

---

 - [ ] <!-- rebase-check -->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#github/googleapis/nodejs-kms).

* chore(deps): update dependency sinon to v11 (#455)

[![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)) | [`^10.0.0` -> `^11.0.0`](https://renovatebot.com/diffs/npm/sinon/10.0.0/11.1.0) | [![age](https://badges.renovateapi.com/packages/npm/sinon/11.1.0/age-slim)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://badges.renovateapi.com/packages/npm/sinon/11.1.0/adoption-slim)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://badges.renovateapi.com/packages/npm/sinon/11.1.0/compatibility-slim/10.0.0)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://badges.renovateapi.com/packages/npm/sinon/11.1.0/confidence-slim/10.0.0)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>sinonjs/sinon</summary>

### [`v11.1.0`](https://togithub.com/sinonjs/sinon/blob/master/CHANGELOG.md#&#8203;1110--2021-05-25)

[Compare Source](https://togithub.com/sinonjs/sinon/compare/v11.0.0...31be9a5d5a4762ef01cb195f29024616dfee9ce8)

\==================

-   Add sinon.promise() implementation ([#&#8203;2369](https://togithub.com/sinonjs/sinon/issues/2369))
-   Set wrappedMethod on getters/setters ([#&#8203;2378](https://togithub.com/sinonjs/sinon/issues/2378))
-   \[Docs] Update fake-server usage & descriptions ([#&#8203;2365](https://togithub.com/sinonjs/sinon/issues/2365))
-   Fake docs improvement ([#&#8203;2360](https://togithub.com/sinonjs/sinon/issues/2360))
-   Update nise to 5.1.0 (fixed [#&#8203;2318](https://togithub.com/sinonjs/sinon/issues/2318))

### [`v11.0.0`](https://togithub.com/sinonjs/sinon/blob/master/CHANGELOG.md#&#8203;1100--2021-05-24)

[Compare Source](https://togithub.com/sinonjs/sinon/compare/v10.0.1...v11.0.0)

\==================

-   Explicitly use samsam 6.0.2 with fix for [#&#8203;2345](https://togithub.com/sinonjs/sinon/issues/2345)
-   Update most packages ([#&#8203;2371](https://togithub.com/sinonjs/sinon/issues/2371))
-   Update compatibility docs ([#&#8203;2366](https://togithub.com/sinonjs/sinon/issues/2366))
-   Update packages (includes breaking fake-timers change, see [#&#8203;2352](https://togithub.com/sinonjs/sinon/issues/2352))
-   Warn of potential memory leaks ([#&#8203;2357](https://togithub.com/sinonjs/sinon/issues/2357))
-   Fix clock test errors

### [`v10.0.1`](https://togithub.com/sinonjs/sinon/blob/master/CHANGELOG.md#&#8203;1001--2021-04-08)

[Compare Source](https://togithub.com/sinonjs/sinon/compare/v10.0.0...v10.0.1)

\==================

-   Upgrade sinon components (bumps y18n to 4.0.1)
-   Bump y18n from 4.0.0 to 4.0.1

</details>

---

### Configuration

📅 **Schedule**: "after 9…
sofisl pushed a commit that referenced this pull request Nov 18, 2022
sofisl pushed a commit that referenced this pull request Jan 17, 2023
sofisl pushed a commit that referenced this pull request Jan 26, 2023
Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants