vue-google-api

Overview

vue-google-api

This project is outdated and no longer maintained, I can't find time to do what should be done here. Really sorry, if someone wants to maintain it, tell me, I accept to transfer ownership, or even without asking me, fork it...

This vue 2 plugin is a wrapper for the script needed to do client side operations with Google APIs and Google authentication.

The plugin loads the Google API client library script dynamically, and append it to the document's head, without need to manually edit index.html file. This makes the gapi object accessible at window.gapi and you can do with it all the operations described in the Google client library for Javascript documentation.

But more than this, it also exposes the $gapi object through the Vue prototype, accessible from everywhere via Vue.$gapi, or via this.$gapi from within a component. $gapi encapsulate the gapi object and simplifies its operations by automatically doing loadings and initializations when needed, chaining the transitional results through a promises chain and always returns the expected result (or error) in a promise, to respect the asynchronous nature of the Google APIs and authentication processes.

The plugin also globally registers a GoogleSigninBtn component which is a 'Signin with Google' button in the respect of the Google's guidelines for it.

Installation

yarn add vue-google-api

Then, in the file where you instantiate vue.js (generally main.js) :

import Vue from 'vue'
import VueGoogleApi from 'vue-google-api'

const config = {
  apiKey: 'your_api_key',
  clientId: 'your_client_id.apps.googleusercontent.com',
  scope: 'space_separated_scopes',
  discoveryDocs: [ list_of_discoverydocs_urls ]
}
Vue.use(VueGoogleApi, config)

config is an object containing the API key, the client Id, the authorization scope and optionally the discovery docs as described in the Google API Client reference. You can learn how to obtain these parameters in the Google API Guides / Get started page.

Usage

In normal usage, $gapi cares, when a final method is requested, to do all the intermediate stuff that is needed, such as loading parts of the client (commonly client and auth2), initializing them and performing required checks. It then returns a fulfilled promise containing the requested result in cas eof success, or a rejected promise in case of error, eventually containing various explanations about what happened.

 


Vue.$gapi.isSignedIn()

Returns through an always resolved promise a boolean indicating if a user is actually signed in or not.

this.$gapi.isSignedIn()
  .then(result => {
    console.log(result ? 'Signed in' : 'Signed out')
  })

 


Vue.$gapi.currentUser()

Returns through an always resolved promise the current user in a readable format if one is connected, or null if no user is connected.

this.$gapi.currentUser()
  .then(user => {
    if (user) {
      console.log('Signed in as %s', user.name)
    } else {
      console.log('No user is connected.')
    }
  })

The user object corresponds to the Google User Basic Profile informations, but in a friendly format :

{
  id: google_user_identifier,
  name: full_name,
  firstname: given_name,
  lastname: family_name,
  image: user_thumbnail_url,
  email: email_address
}

 


Vue.$gapi.signIn()

Starts an Oauth2 sign in process. It will open the Google authentification popup where the user will be prompted to identify, with a prefilled profile if the browser was already connected the the Google account. It could be followed by a password request and / or a captcha request, and then by another popup where the user has to authorize the application if it has never been done and depending on the application requested scope.

If the user completes the authentication procedure (generally by just clicking his profile), the method returns a fulfilled promise containing the signed in user, with the same format than from $gapi.currentUser().

If anything goes wrong (for example if the user closes the authentication popup without signing in), the method returns a rejected Promise with an object containing an error property explaining what's wrong :

this.$gapi.signIn()
  .then(user => {
    console.log('Signed in as %s', user.name)
  })
  .catch(err => {
    console.error('Not signed in: %s', err.error)
  })

 


Vue.$gapi.signOut()

Disconnects the signed in user from the application. Returns an empty resolved promise when it's done.

this.$gapi.signOut()
  .then(() => {
    console.log('User disconnected.')
  })

 


Vue.$gapi.request(args)

Makes a generic request to one of the several Google's APIs endpoint, as specified in the Google API Client Reference. Only the path property is mandatory, all the other ones are optional. Depending of several things and the authorizations the user has granted to the application, the method responds by a resolved promise containing the response, or a reject one containing a structure where informations on why it has failed can be found.

this.$gapi.request({
  path: 'https://people.googleapis.com/v1/people/me?personFields=names,emailAddresses',
  method: 'GET',
  params: {
    personFields: 'names,emailAddresses'
  }
}).then(response => {
  console.log(response)
})

To find and use Google's APIs endpoints, please refer to each API documentation, this is not the purpose of this Readme.

Google Signin button component

The plugin registers globally a Google Sign In button, respecting the Google's guidelines for such an element :

Google sign in button

The component re-emits its native click event as a vue click event to handle it the way you want. It also re-emits its keypress.enter as he same click event.

It optionally takes two attributes:

  • label: Sets the text displayed in the button. Defaults to "Signin in with Google"
  • custom-class: A class name which overrides the default rendering of the button. The default styling includes two additional nested classes: span.icon and span.text, that also can be redefined cascading the custom class.
<google-signin-btn label="Sign In" customClass="my-button" @click="signin">
...
<style>
  .my-button {
    background-color: #eee;
  }
  .my-button span.text {
    color: red;
  }
</style>

 

Intermediate methods

The methods seen above automatically calls and wait for intermediate methods that loads the required parts of the client and initialize what is needed. The wrapper always check if the required object need to be loaded or is already present, and need to be initialized or not, and acts in consequence.

But if you need, for special purposes, to directly access these intermediate methods and their results, they are all exposed prefixed by an underscore: _

 


Vue.$gapi._load()

Loads the gapi global object and returns it through a promise. If it has already been loaded, directly resolves the promise without reloading it:

this.$gapi._load()
  .then(gapi => {
    console.log('gapi object :', gapi)
  })

This object is exactly the base object where lives all the methods explained in the Google API Client Javascript Library reference, and you can perform on it all the operations they describe.

 


Vue.$gapi._libraryLoad('lib')

Loads a gapi sub library by its name (for example client or auth2). It makes an internal call to $gapi._load() so gapi is previously loaded if it hasn't been done. It returns through a promise the sub library itself. If the sub library has already been loaded, it doesn't reload it and resolves immediately. If it hasn't already been done, the sub library have to be initialized.

this.$gapi._libraryLoad('auth2')
  .then(auth2 => {
    return auth2.init(this.$gapi.config)
  })

 


Vue.$gapi._libraryInit('lib', [ config ])

Initializes the specified library with an application config. As usual, loads gapi if needed and loads the library if needed too by an internal call to _libraryLoad.

The config parameter is an object containing optional API key, Client Id, etc., as discussed in the plugin installation, but can be different here if you need a special config for a particular API call. If this optional parameter is omitted, the library will be initialized with the config passed down at the installation process (Vue.use(VueGoogleApi, config)). If one of its sub-properties is omitted, it wil be replaced by this base config same property value.

The method returns, through a promise, the initialized library, ready to be used for API calls for example.

One example of overriding the application API config is for example to grab in the client library particular methods to call one or more precise Google APIs by furnishing the DiscoveryDoc for that API:

this.$gapi._libraryInit('client', { discoveryDocs: [ 'https://people.googleapis.com/$discovery/rest' ]})
  .then(client => {
    return client.people.people.get({
      'resourceName': 'people/me',
      'requestMask.includeField': 'person.names'
    }).then(response => {
      console.log(response.result)
    })
  })

Even if you didn't completed the discoveryDocs property at the plugin installation time, you'll get a client with the people API facility. You can also give for different APIs different clientIds and apiKeys if you want to track hits from different Google Cloud accounts or projects for example.

 

Development setup

Clone the project, cd into it and install dependencies:

(if you don't use yarn, you can replace yarn commands by npm run...)

git clone "https://github.com/vertcitron/vue-google-api.git"
cd vue-google-api
yarn install

Then create at the root of the project a .env.local file with your own Google application identifiers like this :

VUE_APP_CLIENTID=your_client_id.apps.googleusercontent.com
VUE_APP_APIKEY=your_api_key
VUE_APP_SCOPE=your_application_scope

You can also add a VUE_APP_DISCOVERYDOCS key / value if you need.

This file will not be versionned by git and will remain local in your computer.

Otherwise you can modify the main.js file to directly introduce these values if you don't want to use a .env file.

Then you can work with the project, with the following commands:

  • Compiles and hot-reloads for development: yarn serve
  • Compiles and minifies for production: yarn build
  • Run tests: yarn test
  • Lints and fixes files: yarn lint

App.vue and its children contains a basic Google authentication layout, with a component presenting the user if one is signed in or a signin button otherwise.

The plugin index.js file is at the project's root, and the gapi wrapper is located at core/GAPI.js

Comments
  • Unable To Upload Image To Google Drive

    Unable To Upload Image To Google Drive

    I'm having issues uploading images to Google Drive, tried $gapi.request posting to https://www.googleapis.com/upload/drive/v3/files?uploadType=media and https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart, both successfully create the file on Google Drive, however the uploaded image is blank.

    path = "e4464ea2-56f7-59c7-a29b-bc305e42df1c.jpg";
    data = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD..."
    
    async uploadGoogleMedia(path, data) {
        let url = `https://www.googleapis.com/upload/drive/v3/files?uploadType=media`;
        let response = await Vue.prototype.$gapi.request({
            path: url,
            method: 'POST',
            headers: {
                "Content-Type": 'image/jpeg',
                'Content-Length': this.contentLength(data)
            },
            body: data
        });
        return `https://drive.google.com/open?id=${response.result.id}`;
    }
    
    contentLength(base64) {
        return parseInt(base64.replace(/=/g,"").length * 0.75);
    }
    
    async uploadGoogleMultipart(path, data) {
      let metadata = {
          'name': path, 
          'mimeType': 'image/jpeg'
      };
      let form = {
          metadata: {
              type: 'application/json; charset=UTF-8',
              value: JSON.stringify(metadata)
          },
          file: {
              type: 'image/jpeg',
              value: data
          }
      };
      let boundary = "nVenJ7H4puv";
      let body = this.contentDisposition(boundary, form);
      let url = `https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart`;
      let response = await Vue.prototype.$gapi.request({
          path: url,
          method: 'POST',
          headers: {
              "Content-Type": "multipart/related; boundary=" + boundary,
              'Content-Length': body.length
          },
          body: body
      });
      return `https://drive.google.com/open?id=${response.result.id}`;
    }
    
    contentDisposition(boundary, formData) {
      let body = "";
      for (let key in formData) {
          body += "--" + boundary
               + "\r\nContent-Disposition: form-data; name=" + key
               + "\r\nContent-type: " + formData[key].type
               + "\r\n\r\n" + formData[key].value + "\r\n";
      }
      body += "--" + boundary + "--\r\n";
      return body;
    }
    

    Looks like google-api-javascript-client also has issues uploading media. As bkoski suggests, I could try using XMLHttpRequest to manually post the image, however I'd need the access_token for the Authorization header.

    Any idea how to post images to https://www.googleapis.com/upload/drive/v3/files using vue-google-api? Or how to obtain the access_token from vue-google-api so I can post the images manually?

    opened by dalezak 1
  • Unable to access variable

    Unable to access variable

    I'm trying to accesss this.$gapi from my vue file, though this doesn't work...

    I'm using Nuxt.js alongside Vue, it should be imported correctly though.

    import Vue from 'vue' import VueGoogleApi from 'vue-google-api'

    const config = { apiKey: 'blah', clientId: 'yeaapps.googleusercontent.com', scope: 'https://www.googleapis.com/auth/drive.readonly' } Vue.use(VueGoogleApi, config)

    And I'm using the isSignedIn() example as provided in the docs.

    Cannot read property '$gapi' of undefined I'm trying to access it like this.$gapi

    I really have no idea what to do to solve this..

    opened by Aeka123 1
  • Bump lodash from 4.17.11 to 4.17.14

    Bump lodash from 4.17.11 to 4.17.14

    Bumps lodash from 4.17.11 to 4.17.14.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 1
  • authresponce access

    authresponce access

    Hi there,

    I just found your google-api wrapper and I believe it's a very nice tool. However, after doing some reading on Google Sign-In I believe that there are some missing parts you need to add to it.

    Is it possible you either add auth.currentUser.get().getAuthResponse() somewhere so I can access it or at least expose its contents into an object of your own? There's plenty of other information that is useful in there, such as access and id tokens, expires in and at, token type etc.

    Maybe it would be even better if you expose the "auth" object to me so I can handle it the way I want.

    Hope you are on to that or getting there. I would appreciate it much.

    thanks

    opened by epam20 1
  • Accessing $gapi Inside Of Model Classes

    Accessing $gapi Inside Of Model Classes

    I'm able to access this.$gapi inside of my components like this.$gapi.request, but would like to move some of that logic into my model classes for loading and saving.

    The readme says it should be accessible from everywhere via Vue.$gapi, or via this.$gapi from within a component.

    However calling Vue.$gapi.request in my model classes throws the exception Cannot read property 'request' of undefined, even when I've included import Vue from 'vue';

    Any suggestion how to call $gapi from my model classes?

    opened by dalezak 1
  • Bump handlebars from 4.1.2 to 4.5.3

    Bump handlebars from 4.1.2 to 4.5.3

    Bumps handlebars from 4.1.2 to 4.5.3.

    Changelog

    Sourced from handlebars's changelog.

    v4.5.3 - November 18th, 2019

    Bugfixes:

    • fix: add "no-prototype-builtins" eslint-rule and fix all occurences - f7f05d7
    • fix: add more properties required to be enumerable - 1988878

    Chores / Build:

    • fix: use !== 0 instead of != 0 - c02b05f
    • add chai and dirty-chai and sinon, for cleaner test-assertions and spies, deprecate old assertion-methods - 93e284e, 886ba86, 0817dad, 93516a0

    Security:

    • The properties __proto__, __defineGetter__, __defineSetter__ and __lookupGetter__ have been added to the list of "properties that must be enumerable". If a property by that name is found and not enumerable on its parent, it will silently evaluate to undefined. This is done in both the compiled template and the "lookup"-helper. This will prevent new Remote-Code-Execution exploits that have been published recently.

    Compatibility notes:

    • Due to the security-fixes. The semantics of the templates using __proto__, __defineGetter__, __defineSetter__ and __lookupGetter__ in the respect that those expression now return undefined rather than their actual value from the proto.
    • The semantics have not changed in cases where the properties are enumerable, as in:
    {
      __proto__: 'some string'
    }
    
    • The change may be breaking in that respect, but we still only increase the patch-version, because the incompatible use-cases are not intended, undocumented and far less important than fixing Remote-Code-Execution exploits on existing systems.

    Commits

    v4.5.2 - November 13th, 2019

    Bugfixes

    • fix: use String(field) in lookup when checking for "constructor" - d541378
    • test: add fluent API for testing Handlebars - c2ac79c

    Compatibility notes:

    • no incompatibility are to be expected
    ... (truncated)
    Commits
    • c819c8b v4.5.3
    • 827c9d0 Update release notes
    • f7f05d7 fix: add "no-prototype-builtins" eslint-rule and fix all occurences
    • 1988878 fix: add more properties required to be enumerable
    • 886ba86 test/chore: add chai/expect and sinon to "runtime"-environment
    • 0817dad test: add sinon as global variable to eslint in the specs
    • 93516a0 test: add sinon.js for spies, deprecate current assertions
    • 93e284e chore: add chai and dirty-chai for better test assertions
    • c02b05f fix: use !== 0 instead of != 0
    • 8de121d v4.5.2
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump lodash from 4.17.11 to 4.17.15

    Bump lodash from 4.17.11 to 4.17.15

    Bumps lodash from 4.17.11 to 4.17.15.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump mixin-deep from 1.3.1 to 1.3.2

    Bump mixin-deep from 1.3.1 to 1.3.2

    Bumps mixin-deep from 1.3.1 to 1.3.2.

    Commits
    Maintainer changes

    This version was pushed to npm by doowb, a new releaser for mixin-deep since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump eslint-utils from 1.3.1 to 1.4.2

    Bump eslint-utils from 1.3.1 to 1.4.2

    Bumps eslint-utils from 1.3.1 to 1.4.2.

    Commits
    • 4e1bc07 1.4.2
    • e4cb014 🐛 add null test
    • 230a4e2 1.4.1
    • 08158db 🐛 fix getStaticValue security issue
    • 587cca2 🐛 fix getStringIfConstant to handle literals correctly
    • c119e83 🐛 fix getStaticValue to handle bigint correctly
    • 531b16f 🔖 1.4.0
    • 276303d ⚒ upgrade rollup
    • cb518c7 🐛 fix hasSideEffect false negative
    • aac472e 🐛 fix isParenthesized had false positive on ImportExpression (fixes #1)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump websocket-extensions from 0.1.3 to 0.1.4

    Bump websocket-extensions from 0.1.3 to 0.1.4

    Bumps websocket-extensions from 0.1.3 to 0.1.4.

    Changelog

    Sourced from websocket-extensions's changelog.

    0.1.4 / 2020-06-02

    • Remove a ReDoS vulnerability in the header parser (CVE-2020-7662, reported by Robert McLaughlin)
    • Change license from MIT to Apache 2.0
    Commits
    • 8efd0cd Bump version to 0.1.4
    • 3dad4ad Remove ReDoS vulnerability in the Sec-WebSocket-Extensions header parser
    • 4a76c75 Add Node versions 13 and 14 on Travis
    • 44a677a Formatting change: {...} should have spaces inside the braces
    • f6c50ab Let npm reformat package.json
    • 2d211f3 Change markdown formatting of docs.
    • 0b62083 Update Travis target versions.
    • 729a465 Switch license to Apache 2.0.
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Fixes #14

    Fixes #14

    Changes the signOut method to wait for GoogleAuth.disconnect to resolve before resolving itself. This fixes the bug where calling isSignedIn immediately after awaiting signOut would return true.

    opened by metanomial 0
  • Bump serialize-javascript from 1.7.0 to 2.1.2

    Bump serialize-javascript from 1.7.0 to 2.1.2

    Bumps serialize-javascript from 1.7.0 to 2.1.2.

    Release notes

    Sourced from serialize-javascript's releases.

    v2.1.2

    v2.1.1

    • Fix regular expressions Cross-Site Scripting (XSS) vulnerability (see security advisory)
    • Migrate to nyc from istanbul

    v2.1.0

    v2.0.0

    • re-landed #54 with bump major version (see: #57)

    Behavior changes for undefined

    It serializes undefined values as follows since this version. The result of serialization may be changed if you are passing undefined values into the serialize-javascript.

    v2.x

    const serialize = require('serialize-javascript');
    

    serialize({undef: undefined}); // '{"undef":undefined}'

    v1.x

    const serialize = require('serialize-javascript');
    

    serialize({undef: undefined}); // '{}'

    v1.9.1

    v1.9.0

    • support serialize undefined (@nqdy666, #54)
    • Update Node.js versions to tests

    v1.8.0

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump kind-of from 3.2.2 to 6.0.3

    Bump kind-of from 3.2.2 to 6.0.3

    Bumps kind-of from 3.2.2 to 6.0.3.

    Changelog

    Sourced from kind-of's changelog.

    [6.0.3] - 2020-01-16

    • Merge pull request #31 for issue #30

    [6.0.0] - 2017-10-13

    • refactor code to be more performant
    • refactor benchmarks

    [5.1.0] - 2017-10-13

    Added

    • Merge pull request #15 from aretecode/patch-1
    • adds support and tests for string & array iterators

    Changed

    • updates benchmarks

    [5.0.2] - 2017-08-02

    • Merge pull request #14 from struct78/master
    • Added undefined check

    [5.0.0] - 2017-06-21

    • Merge pull request #12 from aretecode/iterator
    • Set Iterator + Map Iterator
    • streamline isbuffer, minor edits

    [4.0.0] - 2017-05-19

    • Merge pull request #8 from tunnckoCore/master
    • update deps
    Commits
    Maintainer changes

    This version was pushed to npm by doowb, a new releaser for kind-of since your current version.


    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump acorn from 3.3.0 to 7.1.1

    Bump acorn from 3.3.0 to 7.1.1

    Bumps acorn from 3.3.0 to 7.1.1.

    Commits
    • 6d19489 Mark release 7.1.1
    • 793c0e5 More rigorously check surrogate pairs in regexp validator
    • b5c1787 Fix incorrect comment in regexp parser
    • 12ae8fe Parameterize dummy value and export isDummy
    • fa3ad8c Further refine acorn-walk types
    • 1d50286 Fix some errors in walk types
    • 97801f0 Mark acorn-walk 7.1.1
    • e9372c1 Further clean up walker types
    • de6edeb Remove NarrowNode from walk.d.ts
    • 1d85e7c Fix: acorn-walk type work with acorn's
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
Owner
Stéphane Souron
Typescript, Node, and Vue.js craftsman and enthusiast
Stéphane Souron
Saving Quick Notes - Vue, Vuex, Vue Router, Vue Composition API

Saving Quick Notes - Vue Project setup yarn install Compiles and hot-reloads for development yarn run serve Compiles and minifies for production yar

Karol Fabjańczuk 5 Mar 31, 2022
A vue boiler plate with state management, vuex, vue-router that can be backed by a laravel restful api using jwt auth

Laravel 6 (LTS) Vue.js Frontend Boilerplate A Vue.js Frontend starter project kit template/boilerplate with Laravel 6 Backend API support. Features Re

MUWONGE HASSAN 2 Oct 12, 2021
E-Store built with Vue's Composition api script setup, mocked a server, vuex, vue-router

Frontend Mentor - E-commerce product page solution This is a solution to the E-commerce product page challenge on Frontend Mentor. Frontend Mentor cha

_Chi_ 0 Apr 8, 2022
📦 Fast, Simple, and Lightweight State Manager for Vue 3.0 built with composition API, inspired by Vuex.

v-bucket NPM STATUS: ?? Fast, Simple, and Lightweight State Management for Vue 3.0 built with composition API, inspired by Vuex. Table of Contents Mai

mehdi 42 Aug 10, 2022
Lightweight Vue 3 composition API-compatible store pattern library with built-in undo/redo functionality.

vue-store Lightweight Vue 3 composition API-compatible store pattern library. Offers a simple alternative that is on par with VueX in terms of feature

Korijn van Golen 23 Sep 27, 2022
A Vue frontend for RESTful Rails API backend to book an appointment with a doctor.

vue_appointment Project setup npm install Compiles and hot-reloads for development npm run serve Compiles and minifies for production npm run build

omoogun olawale 1 Dec 15, 2022
Todos-VUEX - A todo list made using Vue, Vuex, Axios and JSON Placeholder API.

todos Project setup npm install Compiles and hot-reloads for development npm run serve Compiles and minifies for production npm run build Lints and

Lasanja 0 Jan 3, 2022
A state management library for react inspired by vue 3.0 reactivity api and immer

Welcome to costate ?? A state management library for react inspired by vue 3.0 reactivity api and immer costate is a tiny package that allows you to w

工业聚 7 Mar 29, 2022
Reactivity system for Angular. Based on Vue Composition API.

Note This repository is no longer maintained. The story continues at Angular Composition API. Reactivity system for Angular. Based on Vue Composition

null 46 Nov 28, 2022
A tiny state management library for Vue Composition API.

vue-unstated A tiny state management library for Vue Composition API based on unstated-next which is for React. ?? Demo ?? Installation $ npm install

Xuesu Li 30 Jan 28, 2023
A util package to use Vuex with Composition API easily.

vuex-composition-helpers A util package to use Vuex with Composition API easily. Installation $ npm install vuex-composition-helpers This library is n

Greenpress 276 Dec 30, 2022
Use a JSONAPI api with a Vuex store, with data restructuring/normalization.

jsonapi-vuex A module to access JSONAPI data from an API, using a Vuex store, restructured to make life easier. Vue 3 - v5 and later supports only Vue

Matthew Richardson 145 Dec 22, 2022
Vue3 composition api exmaple

데모(Demo) click here . . 발단 Vue3로 넘어오면서 composition api 사용이 가능해짐에 따라 Vuex를 더이상 쓰지 않아도 된다는 말을 들었다. Vue2에서는 필수적인 라이브러리였는데, 그렇다면 Vue3에선 어떻게 상태관리를 하는것인지 궁금

shelly 1 Dec 7, 2021
A domain name authorization authentication query system (via API). It is currently used for teaching purposes. I will add content later to make the system complete!

Domainname Auth Query System 1. What is "Domainname Auth Query System" ? "Domainname Auth Query System" is a webpage dedicated to publicly querying wh

Prk 1 Dec 12, 2021
Controle de acesso dos usuários desde o cadastro até o login no back-end, em que obteremos o token de segurança para realizar requisições nas rotas seguras da API.

projeto Project setup npm install Compiles and hot-reloads for development npm run serve Compiles and minifies for production npm run build Lints a

Wiliender Ferreira Silva 0 Dec 24, 2021
🏳️ 🏴 REST Countries API with color theme switcher

Countries You can See all countries from the API on the homepage Search for a country using an input field Filter countries by region Click on a count

Thamer Ayachi 2 Nov 5, 2022
Modular security for Vue, Vuex, Vue-Router and Nuxt

vue-kindergarten Introduction vue-kindergarten is a plugin for VueJS 2.0 that integrates kindergarten into your VueJS applications. It helps you to au

Jiří Chára 309 Dec 8, 2022
Simple Scrum App built with Vue 2.6( + Bootstrap-Vue + Vuex)

vuescrum Project setup npm install Compiles and hot-reloads for development npm run serve Compiles and minifies for production npm run build Lints

Marina Santana 0 Dec 31, 2021
A tiny Vue plugin that connects Vue Router with Redux

redux-first-vue-routing A tiny Vue plugin that connects Vue Router with Redux, an implementation of redux-first-routing. New to Redux? Start Here Achi

Kai Johnson 4 Apr 27, 2022