From 8b09a458cfd0969876c13787126c1a4fb6052f06 Mon Sep 17 00:00:00 2001 From: Asraf Ali Date: Sun, 23 May 2021 13:42:43 +0530 Subject: [PATCH] Initial development (#1) * chore: initial development * chore: pre-commit fix * chore: 18+ slots * chore: find state and district by text * chore: remove unwanted files * chore: fix ci * chore: cli added * chore: map files added to npmignore * chore: lint fix * chore: cron added * chore: tg message changes * chore: cron modified * chore: test cron * chore: cron modified for statewise * chore: Proper readme added * chore: docs updated * chore: EOL fix * chore: minor EOL fix --- .github/workflows/ci.yml | 6 +- .npmignore | 3 +- README.md | 101 +++- docs/assets/js/search.js | 2 +- docs/classes/cowinator.html | 430 +++++++++++++++ docs/classes/default.html | 970 ---------------------------------- docs/index.html | 111 +++- docs/interfaces/district.html | 174 ++++++ docs/interfaces/session.html | 440 +++++++++++++++ docs/interfaces/state.html | 174 ++++++ docs/modules.html | 33 +- package.json | 51 +- public/index.html | 24 - src/cli/api.ts | 100 ++++ src/cli/cron.ts | 60 +++ src/cli/index.ts | 29 + src/index.spec.ts | 62 ++- src/index.ts | 239 ++++++++- tsconfig.json | 2 +- webpack.config.js | 34 -- yarn.lock | 850 +++++++++++++---------------- 21 files changed, 2311 insertions(+), 1584 deletions(-) create mode 100644 docs/classes/cowinator.html delete mode 100644 docs/classes/default.html create mode 100644 docs/interfaces/district.html create mode 100644 docs/interfaces/session.html create mode 100644 docs/interfaces/state.html delete mode 100644 public/index.html create mode 100644 src/cli/api.ts create mode 100644 src/cli/cron.ts create mode 100644 src/cli/index.ts delete mode 100644 webpack.config.js diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5dae468..28ecfde 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,9 +15,7 @@ jobs: node-version: "12.x" - name: Install dependencies run: yarn - - name: Test Package - run: yarn test + - name: Lint Package + run: yarn lint - name: Build Package run: yarn build - - name: Webpack Compile - run: yarn compile diff --git a/.npmignore b/.npmignore index 264883a..b669982 100644 --- a/.npmignore +++ b/.npmignore @@ -6,4 +6,5 @@ scripts/ docs/ examples/ .eslintrc -.eslintignore \ No newline at end of file +.eslintignore +*.map diff --git a/README.md b/README.md index 8a4d2db..66d7e3e 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,98 @@ -# Typescript Template +# CoWin-ator -This is the template repo of typescript project. +This is the package to get Cowin slots and stats by state/district. -Download this repo and start using it as base template of your project. +Please refer [API Documentation](https://hi-imcodeman.github.io/cowinator) here. -Pre-installed and confiured with followings: +[![NPM](https://nodei.co/npm/cowinator.png)](https://nodei.co/npm/cowinator/) -- [Typescript](https://www.typescriptlang.org/) -- [Jest](https://jestjs.io/) -- [Webpack](https://webpack.js.org/) +## Installation + +Install using 'npm' + +```sh +npm i cowinator +``` + +Install using 'yarn' + +```sh +yarn add cowinator +``` + +## Development Usage + +```javascript +import { Cowinator } from "cowinator"; + +const client = new Cowinator(); + +// List of states having state_id and state_name +client.getStates().then((states) => { + console.log(states); +}); + +// List of districts having district_id and district_name +const state_id = 2; // state_d:2 for 'Andhra Pradesh' +client.getDistricts(state_id).then((districts) => { + console.log(districts); +}); + +// Get stats for specified state +client.getStatsByState(state_id).then((stats) => { + console.log(stats); +}); + +const district_id = 571; // district_id:571 for 'Chennai' +// Get stats for specified state +client.getStatsByDistrict(district_id).then((stats) => { + console.log(stats); +}); + +// Get list of sessions for a district +client.findByDistrict(district_id).then((sessions) => { + console.log(sessions); +}); + +// Find state_id by search string +client.findStateByName("tamil").then((matchedState) => { + console.log(matchedState); // Will get state_id and state_name for 'tamil nadu' +}); + +// Find state_id by search string +client.findDistrictByName(state_id, "east").then((matchedDistrict) => { + console.log(matchedDistrict); // Will get district_id and district_name for 'East Godavari' +}); +``` + +## CLI + +We can use this package in CLI. + +Install for CLI + +```sh +npm i -g cowinator +``` + +### CLI Usage + +To get the stats for a state + +```sh +cowinator andhra +``` + +To get the stats for a particular district in a state + +```sh +cowinator "tamil nadu" --district chennai +``` + +To post the stats to the telegram channel. + +`Note: Please assign your bot token to 'TELEGRAM_BOT_TOKEN' as environment variable.` + +```sh +cowinator "tamil nadu" --district chennai --tgChannel "@channelname" +``` diff --git a/docs/assets/js/search.js b/docs/assets/js/search.js index 8b63885..a2d33fc 100644 --- a/docs/assets/js/search.js +++ b/docs/assets/js/search.js @@ -1 +1 @@ -window.searchData = {"kinds":{"128":"Class","512":"Constructor","2048":"Method"},"rows":[{"id":0,"kind":128,"name":"default","url":"classes/default.html","classes":"tsd-kind-class"},{"id":1,"kind":512,"name":"constructor","url":"classes/default.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"default"},{"id":2,"kind":2048,"name":"add","url":"classes/default.html#add","classes":"tsd-kind-method tsd-parent-kind-class","parent":"default"},{"id":3,"kind":2048,"name":"subtrct","url":"classes/default.html#subtrct","classes":"tsd-kind-method tsd-parent-kind-class","parent":"default"}],"index":{"version":"2.3.9","fields":["name","parent"],"fieldVectors":[["name/0",[0,1.054]],["parent/0",[]],["name/1",[1,12.04]],["parent/1",[0,0.093]],["name/2",[2,12.04]],["parent/2",[0,0.093]],["name/3",[3,12.04]],["parent/3",[0,0.093]]],"invertedIndex":[["add",{"_index":2,"name":{"2":{}},"parent":{}}],["constructor",{"_index":1,"name":{"1":{}},"parent":{}}],["default",{"_index":0,"name":{"0":{}},"parent":{"1":{},"2":{},"3":{}}}],["subtrct",{"_index":3,"name":{"3":{}},"parent":{}}]],"pipeline":[]}} \ No newline at end of file +window.searchData = {"kinds":{"128":"Class","256":"Interface","512":"Constructor","1024":"Property","2048":"Method"},"rows":[{"id":0,"kind":256,"name":"State","url":"interfaces/state.html","classes":"tsd-kind-interface"},{"id":1,"kind":1024,"name":"state_id","url":"interfaces/state.html#state_id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"State"},{"id":2,"kind":1024,"name":"state_name","url":"interfaces/state.html#state_name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"State"},{"id":3,"kind":256,"name":"District","url":"interfaces/district.html","classes":"tsd-kind-interface"},{"id":4,"kind":1024,"name":"district_id","url":"interfaces/district.html#district_id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"District"},{"id":5,"kind":1024,"name":"district_name","url":"interfaces/district.html#district_name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"District"},{"id":6,"kind":256,"name":"Session","url":"interfaces/session.html","classes":"tsd-kind-interface"},{"id":7,"kind":1024,"name":"center_id","url":"interfaces/session.html#center_id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":8,"kind":1024,"name":"name","url":"interfaces/session.html#name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":9,"kind":1024,"name":"address","url":"interfaces/session.html#address","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":10,"kind":1024,"name":"state_name","url":"interfaces/session.html#state_name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":11,"kind":1024,"name":"district_name","url":"interfaces/session.html#district_name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":12,"kind":1024,"name":"block_name","url":"interfaces/session.html#block_name","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":13,"kind":1024,"name":"pincode","url":"interfaces/session.html#pincode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":14,"kind":1024,"name":"from","url":"interfaces/session.html#from","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":15,"kind":1024,"name":"to","url":"interfaces/session.html#to","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":16,"kind":1024,"name":"lat","url":"interfaces/session.html#lat","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":17,"kind":1024,"name":"long","url":"interfaces/session.html#long","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":18,"kind":1024,"name":"fee_type","url":"interfaces/session.html#fee_type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":19,"kind":1024,"name":"session_id","url":"interfaces/session.html#session_id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":20,"kind":1024,"name":"date","url":"interfaces/session.html#date","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":21,"kind":1024,"name":"available_capacity_dose1","url":"interfaces/session.html#available_capacity_dose1","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":22,"kind":1024,"name":"available_capacity_dose2","url":"interfaces/session.html#available_capacity_dose2","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":23,"kind":1024,"name":"available_capacity","url":"interfaces/session.html#available_capacity","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":24,"kind":1024,"name":"fee","url":"interfaces/session.html#fee","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":25,"kind":1024,"name":"min_age_limit","url":"interfaces/session.html#min_age_limit","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":26,"kind":1024,"name":"vaccine","url":"interfaces/session.html#vaccine","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":27,"kind":1024,"name":"slots","url":"interfaces/session.html#slots","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Session"},{"id":28,"kind":128,"name":"Cowinator","url":"classes/cowinator.html","classes":"tsd-kind-class"},{"id":29,"kind":512,"name":"constructor","url":"classes/cowinator.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"Cowinator"},{"id":30,"kind":1024,"name":"baseUrl","url":"classes/cowinator.html#baseurl","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Cowinator"},{"id":31,"kind":1024,"name":"locale","url":"classes/cowinator.html#locale","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Cowinator"},{"id":32,"kind":2048,"name":"getData","url":"classes/cowinator.html#getdata","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Cowinator"},{"id":33,"kind":2048,"name":"getStates","url":"classes/cowinator.html#getstates","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Cowinator"},{"id":34,"kind":2048,"name":"getDistricts","url":"classes/cowinator.html#getdistricts","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Cowinator"},{"id":35,"kind":2048,"name":"findByDistrict","url":"classes/cowinator.html#findbydistrict","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Cowinator"},{"id":36,"kind":2048,"name":"findStateByName","url":"classes/cowinator.html#findstatebyname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Cowinator"},{"id":37,"kind":2048,"name":"findDistrictByName","url":"classes/cowinator.html#finddistrictbyname","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Cowinator"},{"id":38,"kind":2048,"name":"getStatsByDistrict","url":"classes/cowinator.html#getstatsbydistrict","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Cowinator"},{"id":39,"kind":2048,"name":"getStatsByState","url":"classes/cowinator.html#getstatsbystate","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Cowinator"}],"index":{"version":"2.3.9","fields":["name","parent"],"fieldVectors":[["name/0",[0,24.608]],["parent/0",[]],["name/1",[1,33.081]],["parent/1",[0,2.354]],["name/2",[2,27.973]],["parent/2",[0,2.354]],["name/3",[3,24.608]],["parent/3",[]],["name/4",[4,33.081]],["parent/4",[3,2.354]],["name/5",[5,27.973]],["parent/5",[3,2.354]],["name/6",[6,6.001]],["parent/6",[]],["name/7",[7,33.081]],["parent/7",[6,0.574]],["name/8",[8,33.081]],["parent/8",[6,0.574]],["name/9",[9,33.081]],["parent/9",[6,0.574]],["name/10",[2,27.973]],["parent/10",[6,0.574]],["name/11",[5,27.973]],["parent/11",[6,0.574]],["name/12",[10,33.081]],["parent/12",[6,0.574]],["name/13",[11,33.081]],["parent/13",[6,0.574]],["name/14",[12,33.081]],["parent/14",[6,0.574]],["name/15",[13,33.081]],["parent/15",[6,0.574]],["name/16",[14,33.081]],["parent/16",[6,0.574]],["name/17",[15,33.081]],["parent/17",[6,0.574]],["name/18",[16,33.081]],["parent/18",[6,0.574]],["name/19",[17,33.081]],["parent/19",[6,0.574]],["name/20",[18,33.081]],["parent/20",[6,0.574]],["name/21",[19,33.081]],["parent/21",[6,0.574]],["name/22",[20,33.081]],["parent/22",[6,0.574]],["name/23",[21,33.081]],["parent/23",[6,0.574]],["name/24",[22,33.081]],["parent/24",[6,0.574]],["name/25",[23,33.081]],["parent/25",[6,0.574]],["name/26",[24,33.081]],["parent/26",[6,0.574]],["name/27",[25,33.081]],["parent/27",[6,0.574]],["name/28",[26,11.878]],["parent/28",[]],["name/29",[27,33.081]],["parent/29",[26,1.136]],["name/30",[28,33.081]],["parent/30",[26,1.136]],["name/31",[29,33.081]],["parent/31",[26,1.136]],["name/32",[30,33.081]],["parent/32",[26,1.136]],["name/33",[31,33.081]],["parent/33",[26,1.136]],["name/34",[32,33.081]],["parent/34",[26,1.136]],["name/35",[33,33.081]],["parent/35",[26,1.136]],["name/36",[34,33.081]],["parent/36",[26,1.136]],["name/37",[35,33.081]],["parent/37",[26,1.136]],["name/38",[36,33.081]],["parent/38",[26,1.136]],["name/39",[37,33.081]],["parent/39",[26,1.136]]],"invertedIndex":[["address",{"_index":9,"name":{"9":{}},"parent":{}}],["available_capacity",{"_index":21,"name":{"23":{}},"parent":{}}],["available_capacity_dose1",{"_index":19,"name":{"21":{}},"parent":{}}],["available_capacity_dose2",{"_index":20,"name":{"22":{}},"parent":{}}],["baseurl",{"_index":28,"name":{"30":{}},"parent":{}}],["block_name",{"_index":10,"name":{"12":{}},"parent":{}}],["center_id",{"_index":7,"name":{"7":{}},"parent":{}}],["constructor",{"_index":27,"name":{"29":{}},"parent":{}}],["cowinator",{"_index":26,"name":{"28":{}},"parent":{"29":{},"30":{},"31":{},"32":{},"33":{},"34":{},"35":{},"36":{},"37":{},"38":{},"39":{}}}],["date",{"_index":18,"name":{"20":{}},"parent":{}}],["district",{"_index":3,"name":{"3":{}},"parent":{"4":{},"5":{}}}],["district_id",{"_index":4,"name":{"4":{}},"parent":{}}],["district_name",{"_index":5,"name":{"5":{},"11":{}},"parent":{}}],["fee",{"_index":22,"name":{"24":{}},"parent":{}}],["fee_type",{"_index":16,"name":{"18":{}},"parent":{}}],["findbydistrict",{"_index":33,"name":{"35":{}},"parent":{}}],["finddistrictbyname",{"_index":35,"name":{"37":{}},"parent":{}}],["findstatebyname",{"_index":34,"name":{"36":{}},"parent":{}}],["from",{"_index":12,"name":{"14":{}},"parent":{}}],["getdata",{"_index":30,"name":{"32":{}},"parent":{}}],["getdistricts",{"_index":32,"name":{"34":{}},"parent":{}}],["getstates",{"_index":31,"name":{"33":{}},"parent":{}}],["getstatsbydistrict",{"_index":36,"name":{"38":{}},"parent":{}}],["getstatsbystate",{"_index":37,"name":{"39":{}},"parent":{}}],["lat",{"_index":14,"name":{"16":{}},"parent":{}}],["locale",{"_index":29,"name":{"31":{}},"parent":{}}],["long",{"_index":15,"name":{"17":{}},"parent":{}}],["min_age_limit",{"_index":23,"name":{"25":{}},"parent":{}}],["name",{"_index":8,"name":{"8":{}},"parent":{}}],["pincode",{"_index":11,"name":{"13":{}},"parent":{}}],["session",{"_index":6,"name":{"6":{}},"parent":{"7":{},"8":{},"9":{},"10":{},"11":{},"12":{},"13":{},"14":{},"15":{},"16":{},"17":{},"18":{},"19":{},"20":{},"21":{},"22":{},"23":{},"24":{},"25":{},"26":{},"27":{}}}],["session_id",{"_index":17,"name":{"19":{}},"parent":{}}],["slots",{"_index":25,"name":{"27":{}},"parent":{}}],["state",{"_index":0,"name":{"0":{}},"parent":{"1":{},"2":{}}}],["state_id",{"_index":1,"name":{"1":{}},"parent":{}}],["state_name",{"_index":2,"name":{"2":{},"10":{}},"parent":{}}],["to",{"_index":13,"name":{"15":{}},"parent":{}}],["vaccine",{"_index":24,"name":{"26":{}},"parent":{}}]],"pipeline":[]}} \ No newline at end of file diff --git a/docs/classes/cowinator.html b/docs/classes/cowinator.html new file mode 100644 index 0000000..a90acd0 --- /dev/null +++ b/docs/classes/cowinator.html @@ -0,0 +1,430 @@ + + + + + + Cowinator | cowinator - v1.0.0 + + + + + + +
+
+
+
+ +
+
+ Options +
+
+ All +
    +
  • Public
  • +
  • Public/Protected
  • +
  • All
  • +
+
+ + + + +
+
+ Menu +
+
+
+
+
+
+ +

Class Cowinator

+
+
+
+
+
+
+
+

Hierarchy

+
    +
  • + Cowinator +
  • +
+
+
+

Index

+
+
+
+

Constructors

+ +
+
+

Properties

+ +
+
+

Methods

+ +
+
+
+
+
+

Constructors

+
+ +

constructor

+ + +
+
+
+

Properties

+
+ +

baseUrl

+
baseUrl: string = 'https://cdn-api.co-vin.in'
+ +
+
+ +

locale

+
locale: string = 'en_US'
+ +
+
+
+

Methods

+
+ +

findByDistrict

+
    +
  • findByDistrict(districtId: number, date?: Date): Promise<Session[]>
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      districtId: number
      +
    • +
    • +
      date: Date = ...
      +
    • +
    +

    Returns Promise<Session[]>

    +
  • +
+
+
+ +

findDistrictByName

+
    +
  • findDistrictByName(stateId: number, query: string): Promise<null | District>
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      stateId: number
      +
    • +
    • +
      query: string
      +
    • +
    +

    Returns Promise<null | District>

    +
  • +
+
+
+ +

findStateByName

+
    +
  • findStateByName(query: string): Promise<null | State>
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      query: string
      +
    • +
    +

    Returns Promise<null | State>

    +
  • +
+
+
+ +

getData

+
    +
  • getData(endpoint: string): Promise<any>
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      endpoint: string
      +
    • +
    +

    Returns Promise<any>

    +
  • +
+
+
+ +

getDistricts

+
    +
  • getDistricts(stateId: number): Promise<District[]>
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      stateId: number
      +
    • +
    +

    Returns Promise<District[]>

    +
  • +
+
+
+ +

getStates

+
    +
  • getStates(): Promise<State[]>
  • +
+ +
+
+ +

getStatsByDistrict

+
    +
  • getStatsByDistrict(districtId: number, date?: Date): Promise<any>
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      districtId: number
      +
    • +
    • +
      date: Date = ...
      +
    • +
    +

    Returns Promise<any>

    +
  • +
+
+
+ +

getStatsByState

+
    +
  • getStatsByState(stateId: number, date?: Date): Promise<any>
  • +
+
    +
  • + +

    Parameters

    +
      +
    • +
      stateId: number
      +
    • +
    • +
      date: Date = ...
      +
    • +
    +

    Returns Promise<any>

    +
  • +
+
+
+
+ +
+
+ +
+

Generated using TypeDoc

+
+
+ + + \ No newline at end of file diff --git a/docs/classes/default.html b/docs/classes/default.html deleted file mode 100644 index 3908368..0000000 --- a/docs/classes/default.html +++ /dev/null @@ -1,970 +0,0 @@ - - - - - - default | typescript-template - v1.2.0 - - - - - - -
-
-
-
- -
-
- Options -
-
- All -
    -
  • Public
  • -
  • Public/Protected
  • -
  • All
  • -
-
- - - - -
-
- Menu -
-
-
-
-
-
- -

Class default

-
-
-
-
-
-
-
-

Hierarchy

-
    -
  • - EventEmitter -
      -
    • - default -
    • -
    -
  • -
-
-
-

Index

-
- -
-
-
-

Constructors

-
- -

constructor

-
    -
  • new default(options?: EventEmitterOptions): default
  • -
-
    -
  • - -

    Parameters

    -
      -
    • -
      Optional options: EventEmitterOptions
      -
    • -
    -

    Returns default

    -
  • -
-
-
-
-

Properties

-
- -

Readonly Static captureRejectionSymbol

-
captureRejectionSymbol: typeof captureRejectionSymbol
- -
-
- -

Static captureRejections

-
captureRejections: boolean
- -
-
-

Sets or gets the default captureRejection value for all emitters.

-
-
-
-
- -

Static defaultMaxListeners

-
defaultMaxListeners: number
- -
-
- -

Readonly Static errorMonitor

-
errorMonitor: typeof errorMonitor
- -
-
-

This symbol shall be used to install a listener for only monitoring 'error' - events. Listeners installed using this symbol are called before the regular - 'error' listeners are called.

-
-

Installing a listener using this symbol does not change the behavior once an - 'error' event is emitted, therefore the process will still crash if no - regular 'error' listener is installed.

-
-
-
-
-

Methods

-
- -

add

-
    -
  • add(a: number, b: number): number
  • -
-
    -
  • - -

    Parameters

    -
      -
    • -
      a: number
      -
    • -
    • -
      b: number
      -
    • -
    -

    Returns number

    -
  • -
-
-
- -

addListener

-
    -
  • addListener(event: string | symbol, listener: (...args: any[]) => void): default
  • -
-
    -
  • - -

    Parameters

    -
      -
    • -
      event: string | symbol
      -
    • -
    • -
      listener: (...args: any[]) => void
      -
        -
      • -
          -
        • (...args: any[]): void
        • -
        -
          -
        • -

          Parameters

          -
            -
          • -
            Rest ...args: any[]
            -
          • -
          -

          Returns void

          -
        • -
        -
      • -
      -
    • -
    -

    Returns default

    -
  • -
-
-
- -

emit

-
    -
  • emit(event: string | symbol, ...args: any[]): boolean
  • -
-
    -
  • - -

    Parameters

    -
      -
    • -
      event: string | symbol
      -
    • -
    • -
      Rest ...args: any[]
      -
    • -
    -

    Returns boolean

    -
  • -
-
-
- -

eventNames

-
    -
  • eventNames(): (string | symbol)[]
  • -
-
    -
  • - -

    Returns (string | symbol)[]

    -
  • -
-
-
- -

getMaxListeners

-
    -
  • getMaxListeners(): number
  • -
-
    -
  • - -

    Returns number

    -
  • -
-
-
- -

listenerCount

-
    -
  • listenerCount(event: string | symbol): number
  • -
-
    -
  • - -

    Parameters

    -
      -
    • -
      event: string | symbol
      -
    • -
    -

    Returns number

    -
  • -
-
-
- -

listeners

-
    -
  • listeners(event: string | symbol): Function[]
  • -
-
    -
  • - -

    Parameters

    -
      -
    • -
      event: string | symbol
      -
    • -
    -

    Returns Function[]

    -
  • -
-
-
- -

off

-
    -
  • off(event: string | symbol, listener: (...args: any[]) => void): default
  • -
-
    -
  • - -

    Parameters

    -
      -
    • -
      event: string | symbol
      -
    • -
    • -
      listener: (...args: any[]) => void
      -
        -
      • -
          -
        • (...args: any[]): void
        • -
        -
          -
        • -

          Parameters

          -
            -
          • -
            Rest ...args: any[]
            -
          • -
          -

          Returns void

          -
        • -
        -
      • -
      -
    • -
    -

    Returns default

    -
  • -
-
-
- -

on

-
    -
  • on(event: string | symbol, listener: (...args: any[]) => void): default
  • -
-
    -
  • - -

    Parameters

    -
      -
    • -
      event: string | symbol
      -
    • -
    • -
      listener: (...args: any[]) => void
      -
        -
      • -
          -
        • (...args: any[]): void
        • -
        -
          -
        • -

          Parameters

          -
            -
          • -
            Rest ...args: any[]
            -
          • -
          -

          Returns void

          -
        • -
        -
      • -
      -
    • -
    -

    Returns default

    -
  • -
-
-
- -

once

-
    -
  • once(event: string | symbol, listener: (...args: any[]) => void): default
  • -
-
    -
  • - -

    Parameters

    -
      -
    • -
      event: string | symbol
      -
    • -
    • -
      listener: (...args: any[]) => void
      -
        -
      • -
          -
        • (...args: any[]): void
        • -
        -
          -
        • -

          Parameters

          -
            -
          • -
            Rest ...args: any[]
            -
          • -
          -

          Returns void

          -
        • -
        -
      • -
      -
    • -
    -

    Returns default

    -
  • -
-
-
- -

prependListener

-
    -
  • prependListener(event: string | symbol, listener: (...args: any[]) => void): default
  • -
-
    -
  • - -

    Parameters

    -
      -
    • -
      event: string | symbol
      -
    • -
    • -
      listener: (...args: any[]) => void
      -
        -
      • -
          -
        • (...args: any[]): void
        • -
        -
          -
        • -

          Parameters

          -
            -
          • -
            Rest ...args: any[]
            -
          • -
          -

          Returns void

          -
        • -
        -
      • -
      -
    • -
    -

    Returns default

    -
  • -
-
-
- -

prependOnceListener

-
    -
  • prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): default
  • -
-
    -
  • - -

    Parameters

    -
      -
    • -
      event: string | symbol
      -
    • -
    • -
      listener: (...args: any[]) => void
      -
        -
      • -
          -
        • (...args: any[]): void
        • -
        -
          -
        • -

          Parameters

          -
            -
          • -
            Rest ...args: any[]
            -
          • -
          -

          Returns void

          -
        • -
        -
      • -
      -
    • -
    -

    Returns default

    -
  • -
-
-
- -

rawListeners

-
    -
  • rawListeners(event: string | symbol): Function[]
  • -
-
    -
  • - -

    Parameters

    -
      -
    • -
      event: string | symbol
      -
    • -
    -

    Returns Function[]

    -
  • -
-
-
- -

removeAllListeners

-
    -
  • removeAllListeners(event?: string | symbol): default
  • -
-
    -
  • - -

    Parameters

    -
      -
    • -
      Optional event: string | symbol
      -
    • -
    -

    Returns default

    -
  • -
-
-
- -

removeListener

-
    -
  • removeListener(event: string | symbol, listener: (...args: any[]) => void): default
  • -
-
    -
  • - -

    Parameters

    -
      -
    • -
      event: string | symbol
      -
    • -
    • -
      listener: (...args: any[]) => void
      -
        -
      • -
          -
        • (...args: any[]): void
        • -
        -
          -
        • -

          Parameters

          -
            -
          • -
            Rest ...args: any[]
            -
          • -
          -

          Returns void

          -
        • -
        -
      • -
      -
    • -
    -

    Returns default

    -
  • -
-
-
- -

setMaxListeners

-
    -
  • setMaxListeners(n: number): default
  • -
-
    -
  • - -

    Parameters

    -
      -
    • -
      n: number
      -
    • -
    -

    Returns default

    -
  • -
-
-
- -

subtrct

-
    -
  • subtrct(a: number, b: number): number
  • -
-
    -
  • - -

    Parameters

    -
      -
    • -
      a: number
      -
    • -
    • -
      b: number
      -
    • -
    -

    Returns number

    -
  • -
-
-
- -

Static listenerCount

-
    -
  • listenerCount(emitter: EventEmitter, event: string | symbol): number
  • -
-
    -
  • - -
    -
    -
    deprecated
    -

    since v4.0.0

    -
    -
    -
    -

    Parameters

    -
      -
    • -
      emitter: EventEmitter
      -
    • -
    • -
      event: string | symbol
      -
    • -
    -

    Returns number

    -
  • -
-
-
- -

Static on

-
    -
  • on(emitter: EventEmitter, event: string): AsyncIterableIterator<any>
  • -
-
    -
  • - -

    Parameters

    -
      -
    • -
      emitter: EventEmitter
      -
    • -
    • -
      event: string
      -
    • -
    -

    Returns AsyncIterableIterator<any>

    -
  • -
-
-
- -

Static once

-
    -
  • once(emitter: NodeEventTarget, event: string | symbol): Promise<any[]>
  • -
  • once(emitter: DOMEventTarget, event: string): Promise<any[]>
  • -
-
    -
  • - -

    Parameters

    -
      -
    • -
      emitter: NodeEventTarget
      -
    • -
    • -
      event: string | symbol
      -
    • -
    -

    Returns Promise<any[]>

    -
  • -
  • - -

    Parameters

    -
      -
    • -
      emitter: DOMEventTarget
      -
    • -
    • -
      event: string
      -
    • -
    -

    Returns Promise<any[]>

    -
  • -
-
-
-
- -
-
- -
-

Generated using TypeDoc

-
-
- - - \ No newline at end of file diff --git a/docs/index.html b/docs/index.html index 04a77b8..5645438 100644 --- a/docs/index.html +++ b/docs/index.html @@ -3,8 +3,8 @@ - typescript-template - v1.2.0 - + cowinator - v1.0.0 + @@ -23,7 +23,7 @@
  • Preparing search index...
  • The search index is not available
  • - typescript-template - v1.2.0 + cowinator - v1.0.0
    @@ -50,7 +50,7 @@
    -

    typescript-template - v1.2.0

    +

    cowinator - v1.0.0

    @@ -58,17 +58,85 @@

    typescript-template - v1.2.0

    - -

    Typescript Template

    +
    +

    CoWin-ator

    -

    This is the template repo of typescript project.

    -

    Download this repo and start using it as base template of your project.

    -

    Pre-installed and confiured with followings:

    - +

    This is the package to get Cowin slots and stats by state/district.

    +

    Please refer API Documentation here.

    +

    NPM

    + +

    Installation

    +
    +

    Install using 'npm'

    +
    npm i cowinator
    +
    +

    Install using 'yarn'

    +
    yarn add cowinator
    +
    + +

    Development Usage

    +
    +
    import { Cowinator } from "cowinator";
    +
    +const client = new Cowinator();
    +
    +// List of states having state_id and state_name
    +client.getStates().then((states) => {
    +  console.log(states);
    +});
    +
    +// List of districts having district_id and district_name
    +const state_id = 2; // state_d:2 for 'Andhra Pradesh'
    +client.getDistricts(state_id).then((districts) => {
    +  console.log(districts);
    +});
    +
    +// Get stats for specified state
    +client.getStatsByState(state_id).then((stats) => {
    +  console.log(stats);
    +});
    +
    +const district_id = 571; // district_id:571 for 'Chennai'
    +// Get stats for specified state
    +client.getStatsByDistrict(district_id).then((stats) => {
    +  console.log(stats);
    +});
    +
    +// Get list of sessions for a district
    +client.findByDistrict(district_id).then((sessions) => {
    +  console.log(sessions);
    +});
    +
    +// Find state_id by search string
    +client.findStateByName("tamil").then((matchedState) => {
    +  console.log(matchedState); // Will get state_id and state_name for 'tamil nadu'
    +});
    +
    +// Find state_id by search string
    +client.findDistrictByName(state_id, "east").then((matchedDistrict) => {
    +  console.log(matchedDistrict); // Will get district_id and district_name for 'East Godavari'
    +});
    +
    + +

    CLI

    +
    +

    We can use this package in CLI.

    +

    Install for CLI

    +
    npm i -g cowinator
    +
    + +

    CLI Usage

    +
    +

    To get the stats for a state

    +
    cowinator andhra
    +
    +

    To get the stats for a particular district in a state

    +
    cowinator "tamil nadu" --district chennai
    +
    +

    To post the stats to the telegram channel.

    +

    Note: Please assign your bot token to 'TELEGRAM_BOT_TOKEN' as environment variable.

    +
    cowinator "tamil nadu" --district chennai --tgChannel "@channelname"
    +
    diff --git a/docs/interfaces/district.html b/docs/interfaces/district.html new file mode 100644 index 0000000..b955d11 --- /dev/null +++ b/docs/interfaces/district.html @@ -0,0 +1,174 @@ + + + + + + District | cowinator - v1.0.0 + + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Interface District

    +
    +
    +
    +
    +
    +
    +
    +

    Hierarchy

    +
      +
    • + District +
    • +
    +
    +
    +

    Index

    +
    +
    +
    +

    Properties

    + +
    +
    +
    +
    +
    +

    Properties

    +
    + +

    district_id

    +
    district_id: number
    + +
    +
    + +

    district_name

    +
    district_name: string
    + +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Property
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + \ No newline at end of file diff --git a/docs/interfaces/session.html b/docs/interfaces/session.html new file mode 100644 index 0000000..f0ff1f5 --- /dev/null +++ b/docs/interfaces/session.html @@ -0,0 +1,440 @@ + + + + + + Session | cowinator - v1.0.0 + + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Interface Session

    +
    +
    +
    +
    +
    +
    +
    +

    Hierarchy

    +
      +
    • + Session +
    • +
    +
    +
    +

    Index

    +
    + +
    +
    +
    +

    Properties

    +
    + +

    address

    +
    address: string
    + +
    +
    + +

    available_capacity

    +
    available_capacity: number
    + +
    +
    + +

    available_capacity_dose1

    +
    available_capacity_dose1: number
    + +
    +
    + +

    available_capacity_dose2

    +
    available_capacity_dose2: number
    + +
    +
    + +

    block_name

    +
    block_name: string
    + +
    +
    + +

    center_id

    +
    center_id: number
    + +
    +
    + +

    date

    +
    date: string
    + +
    +
    + +

    district_name

    +
    district_name: string
    + +
    +
    + +

    fee

    +
    fee: string
    + +
    +
    + +

    fee_type

    +
    fee_type: string
    + +
    +
    + +

    from

    +
    from: string
    + +
    +
    + +

    lat

    +
    lat: number
    + +
    +
    + +

    long

    +
    long: number
    + +
    +
    + +

    min_age_limit

    +
    min_age_limit: number
    + +
    +
    + +

    name

    +
    name: string
    + +
    +
    + +

    pincode

    +
    pincode: number
    + +
    +
    + +

    session_id

    +
    session_id: string
    + +
    +
    + +

    slots

    +
    slots: string[]
    + +
    +
    + +

    state_name

    +
    state_name: string
    + +
    +
    + +

    to

    +
    to: string
    + +
    +
    + +

    vaccine

    +
    vaccine: string
    + +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Property
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + \ No newline at end of file diff --git a/docs/interfaces/state.html b/docs/interfaces/state.html new file mode 100644 index 0000000..c47eabd --- /dev/null +++ b/docs/interfaces/state.html @@ -0,0 +1,174 @@ + + + + + + State | cowinator - v1.0.0 + + + + + + +
    +
    +
    +
    + +
    +
    + Options +
    +
    + All +
      +
    • Public
    • +
    • Public/Protected
    • +
    • All
    • +
    +
    + + + + +
    +
    + Menu +
    +
    +
    +
    +
    +
    + +

    Interface State

    +
    +
    +
    +
    +
    +
    +
    +

    Hierarchy

    +
      +
    • + State +
    • +
    +
    +
    +

    Index

    +
    +
    +
    +

    Properties

    + +
    +
    +
    +
    +
    +

    Properties

    +
    + +

    state_id

    +
    state_id: number
    + +
    +
    + +

    state_name

    +
    state_name: string
    + +
    +
    +
    + +
    +
    +
    +
    +

    Legend

    +
    +
      +
    • Constructor
    • +
    • Property
    • +
    • Method
    • +
    +
      +
    • Property
    • +
    +
    +
    +
    +
    +

    Generated using TypeDoc

    +
    +
    + + + \ No newline at end of file diff --git a/docs/modules.html b/docs/modules.html index c7bed79..95811f3 100644 --- a/docs/modules.html +++ b/docs/modules.html @@ -3,8 +3,8 @@ - typescript-template - v1.2.0 - + cowinator - v1.0.0 + @@ -23,7 +23,7 @@
  • Preparing search index...
  • The search index is not available
  • - typescript-template - v1.2.0 + cowinator - v1.0.0
    @@ -50,7 +50,7 @@
    -

    typescript-template - v1.2.0

    +

    cowinator - v1.0.0

    @@ -64,7 +64,15 @@

    Index

    Classes

    +
    +
    +

    Interfaces

    +
    @@ -82,7 +90,16 @@

    Classes

    @@ -95,8 +112,12 @@

    Legend

    • Constructor
    • +
    • Property
    • Method
    +
      +
    • Property
    • +
    diff --git a/package.json b/package.json index 56a7113..c13f8a5 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,11 @@ { - "name": "typescript-template", - "version": "1.2.0", - "main": "dist/bundle.js", - "repository": "https://github.com/hi-imcodeman/typescript-template.git", + "name": "cowinator", + "version": "1.0.0", + "main": "build/index.js", + "bin": { + "cowinator": "build/cli/index.js" + }, + "repository": "https://github.com/hi-imcodeman/cowinator.git", "author": "Asraf Ali ", "license": "MIT", "scripts": { @@ -19,30 +22,50 @@ "lint-staged": { "src/**/*.{ts,tsx,js,jsx}": [ "yarn lint --fix", - "git add", - "yarn docs" + "git add" ] }, "husky": { "hooks": { - "pre-commit": "lint-staged && yarn coverage" + "pre-commit": "lint-staged" } }, "devDependencies": { "@types/jest": "^26.0.20", + "@types/lunr": "^2.3.3", + "@types/node-cron": "^2.0.3", + "@types/node-notifier": "^8.0.0", "@typescript-eslint/eslint-plugin": "^4.14.2", "@typescript-eslint/parser": "^4.14.2", - "copy-webpack-plugin": "^7.0.0", "eslint": "^7.19.0", "husky": "^4.3.8", "jest": "^26.6.3", "lint-staged": "^10.5.4", "ts-jest": "^26.5.0", - "ts-loader": "^8.0.15", "typedoc": "^0.20.23", - "typescript": "^4.1.3", - "webpack": "^5.21.1", - "webpack-cli": "^4.5.0" + "typescript": "^4.1.3" + }, + "dependencies": { + "axios": "^0.21.1", + "lunr": "^2.3.9", + "messaging-api-telegram": "^1.0.4", + "moment": "^2.29.1", + "node-cron": "^3.0.0", + "node-notifier": "^9.0.1", + "ora": "^5.4.0", + "yargs": "^17.0.1" }, - "dependencies": {} -} \ No newline at end of file + "keywords": [ + "cowin", + "vaccine", + "india", + "covid", + "corona", + "stats", + "slots", + "telegram", + "cli", + "api", + "cowinator" + ] +} diff --git a/public/index.html b/public/index.html deleted file mode 100644 index 293eb96..0000000 --- a/public/index.html +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - Homepage - - - - - - - - - \ No newline at end of file diff --git a/src/cli/api.ts b/src/cli/api.ts new file mode 100644 index 0000000..af54bc0 --- /dev/null +++ b/src/cli/api.ts @@ -0,0 +1,100 @@ +import { Cowinator } from '../index' +import { TelegramClient } from 'messaging-api-telegram' +import { ParseMode } from 'messaging-api-telegram/dist/TelegramTypes' + +const objToMessage = (title: string, obj: any, messages: string[]) => { + messages.push(`\n${title}:`) + Object.entries(obj).forEach(([key, value]) => { + messages.push(`${key}: ${value}`) + }) +} + +const cowin = new Cowinator() + +export const getStats = async (argv: any) => { + try { + const { state, district, tgChannel, d } = argv + let date=new Date() + if(d){ + date = new Date(d) + } + const symbolFor18Plus = '✅' + const matchedState = await cowin.findStateByName(state) + if (matchedState) { + let matchedDistrict = null + if (district) { + matchedDistrict = await cowin.findDistrictByName(matchedState.state_id, district) + if (matchedDistrict === null) { + console.log(`Entered district "${district}" not matched with CoWin distict list of "${matchedState.state_name}".`); + } + } + let stats = null + const tgMessages: string[] = [] + if (matchedDistrict) { + stats = await cowin.getStatsByDistrict(matchedDistrict.district_id,date) + tgMessages.push(`💉Cowin Stats - ${matchedDistrict.district_name}, ${stats.state}\n`) + tgMessages.push(`Date: ${new Date(stats.date).toLocaleDateString()}`) + tgMessages.push(`State: ${stats.state}`) + tgMessages.push(`District: ${stats.district}`) + tgMessages.push(`Total Slots available: ${stats.slotsAvailable}`) + objToMessage('Slots by Vaccine Name', stats.byVaccine, tgMessages) + objToMessage('Slots available by Fee Type', stats.byFeeType, tgMessages) + objToMessage('Slots available by Age', stats.byAge, tgMessages) + objToMessage('No. of centers by Age', stats.noOfCentersByAge, tgMessages) + objToMessage('No. of centers(availablity) by Age', stats.noOfCentersWithSlotsByAge, tgMessages) + objToMessage('Availability by Block', stats.byBlock, tgMessages) + tgMessages.push(`\nList of centers slots available for 18+`) + Object.entries(stats.centersFor18Plus).forEach(([_, value]) => { + const centerStats = value as any + if (centerStats.available_capacity > 0) { + tgMessages.push(`\n${symbolFor18Plus}${centerStats.name}`) + tgMessages.push(`${centerStats.address}`) + tgMessages.push(`${centerStats.block_name}`) + tgMessages.push(`${centerStats.district_name}`) + tgMessages.push(`${centerStats.pincode}`) + tgMessages.push(`Available Slots: ${centerStats.available_capacity}`) + tgMessages.push(`Fee Type: ${centerStats.fee_type}`) + } + }) + tgMessages.push(`\n${symbolFor18Plus} - Has slots for 18+\n`) + } else { + stats = await cowin.getStatsByState(matchedState.state_id,date) + tgMessages.push(`💉Cowin Stats - ${stats.state}\n`) + tgMessages.push(`Date: ${new Date(stats.date).toLocaleDateString()}`) + tgMessages.push(`State: ${stats.state}`) + tgMessages.push(`Total Slots available: ${stats.slotsAvailable}`) + objToMessage('Slots by Vaccine Name', stats.byVaccine, tgMessages) + objToMessage('Slots available by Fee Type', stats.byFeeType, tgMessages) + objToMessage('Slots available by Age', stats.byAge, tgMessages) + objToMessage('No. of centers by Age', stats.noOfCentersByAge, tgMessages) + objToMessage('No. of centers(availablity) by Age', stats.noOfCentersWithSlotsByAge, tgMessages) + objToMessage('18+ slots available by Districts', stats.districtsFor18Plus, tgMessages) + tgMessages.push(`\nDistrict wise stats:\n`) + Object.entries(stats.byDistrict).forEach(([districtName, value]) => { + const districtStats = value as any + const is18Plus = districtStats.noOfCentersByAge['18+'] !== undefined + const for18Plus = is18Plus ? ` ${symbolFor18Plus}` : '' + tgMessages.push(`${districtName}: ${districtStats.slotsAvailable}${for18Plus}`) + }) + tgMessages.push(`\n${symbolFor18Plus} - Has centers for 18+\n`) + } + + console.log(stats) + if (stats && tgChannel) { + if (process.env.TELEGRAM_BOT_TOKEN) { + tgMessages.push(`\n\nPulled at: ${new Date()}`) + const tgClient = new TelegramClient({ accessToken: process.env.TELEGRAM_BOT_TOKEN }) + await tgClient.sendMessage(tgChannel, tgMessages.join('\n'), { parseMode: ParseMode.HTML }) + console.log(`Message sent to telegram channel "${tgChannel}".`); + } else { + console.log(`"TELEGRAM_BOT_TOKEN" environmental variable not available.`); + } + } + } else { + console.log(`Entered state "${state}" not matched with CoWin state list.`); + } + } catch (error) { + console.error(error.message) + console.log('Try after sometime.') + } +} diff --git a/src/cli/cron.ts b/src/cli/cron.ts new file mode 100644 index 0000000..7d76cac --- /dev/null +++ b/src/cli/cron.ts @@ -0,0 +1,60 @@ +import cron from 'node-cron' +import { Cowinator } from '../index' +import { getStats } from './api' +// import moment from 'moment' + +const client = new Cowinator() + +const sleep = (ms: number) => { + return new Promise((resolve) => { + setTimeout(resolve, ms) + }) +} + +cron.schedule('0 * * * *', async () => { + const tgChannel='@cowinator_tamilnadu' + const state = await client.findStateByName('tamil nadu') + if (state) { + const { state_id, state_name } = state + const districtsList = (await client.getDistricts(state_id)) + let i = 0; + while (i < districtsList.length) { + const { district_name } = districtsList[i] + getStats({ + state: state_name, + district: district_name, + tgChannel + }) + i++ + await sleep(15000) + } + getStats({ + state: state_name, + tgChannel + }) + } +}); + +cron.schedule('30 * * * *', async () => { + const tgChannel='@cowinator_karnataka' + const state = await client.findStateByName('karnataka') + if (state) { + const { state_id, state_name } = state + const districtsList = (await client.getDistricts(state_id)) + let i = 0; + while (i < districtsList.length) { + const { district_name } = districtsList[i] + getStats({ + state: state_name, + district: district_name, + tgChannel + }) + i++ + await sleep(15000) + } + getStats({ + state: state_name, + tgChannel + }) + } +}); diff --git a/src/cli/index.ts b/src/cli/index.ts new file mode 100644 index 0000000..20bb8ea --- /dev/null +++ b/src/cli/index.ts @@ -0,0 +1,29 @@ +#!/usr/bin/env node + +import yargs from 'yargs' +import { getStats } from './api' + +const _argv = yargs + .command('$0 ', 'To get the stats', (yargsBuilder: any) => { + yargsBuilder.positional('state', { + type: 'string', + demandOption: true, + describe: 'Name of the state' + }) + }, getStats) + .option('district', { + alias: 'dt', + type: 'string', + describe: 'Name of the district' + }) + .option('telegramChannel', { + alias: 'tgChannel', + type: 'string', + describe: 'Name of the Telegram channel Ex. "@channelname"' + }) + .option('date', { + alias: 'd', + type: 'string', + describe: 'Date in the format of "MM-DD-YYYY" (Ex. "22-05-2021")' + }) + .argv diff --git a/src/index.spec.ts b/src/index.spec.ts index 91827b5..1c8ec63 100644 --- a/src/index.spec.ts +++ b/src/index.spec.ts @@ -1,11 +1,55 @@ -import Calculation from './index' -describe('class: Caluculation', () => { - const calc = new Calculation() - const a = 10 - test('add()', () => { - expect(calc.add(a, 20)).toBe(30) +import { Cowinator } from './index' + +jest.setTimeout(999999) + +describe('class: Cowinator', () => { + const client = new Cowinator() + + test('getStates', async (done) => { + const states = await client.getStates() + expect(states.length).toBe(37) + done() }) - test('subtract()', () => { - expect(calc.subtrct(a, 5)).toBe(5) + test('getDistricts', async (done) => { + const districts = await client.getDistricts(31) + expect(districts.length).toBe(45) + done() }) -}) \ No newline at end of file + test('findByDistrict', async (done) => { + const sessions = await client.findByDistrict(576) + expect(sessions.length).toBeGreaterThan(1) + done() + }) + + test('getStatsByDistrict', async (done) => { + const stats = await client.getStatsByDistrict(576) + expect(stats.state).toBe('Tamil Nadu') + expect(stats.district).toBe('Nagapattinam') + expect(stats.slotsAvailable).toBeGreaterThan(0) + expect(stats.byBlock).toBeDefined() + expect(stats.byFeeType).toBeDefined() + expect(stats.byAge).toBeDefined() + expect(stats.noOfCentersByAge).toBeDefined() + expect(stats.noOfCentersWithSlotsByAge).toBeDefined() + expect(stats.byVaccine).toBeDefined() + done() + }) + + test('findByStateByName and findByDistrictByName', async (done) => { + const stateMatch = await client.findStateByName('tamil') + expect(stateMatch!.state_id).toBe(31) + expect(stateMatch!.state_name).toBe('Tamil Nadu') + const districtMatch = await client.findDistrictByName(stateMatch!.state_id, 'nagapattinam') + expect(districtMatch!.district_id).toBe(576) + expect(districtMatch!.district_name).toBe('Nagapattinam') + done() + }) + + test('get stats for whole state', async (done) => { + const stateMatch = await client.findStateByName('tamil') + const stats = await client.getStatsByState(stateMatch!.state_id) + expect(stats.state).toBe('Tamil Nadu') + expect(stats.districtsFor18Plus).toBeDefined() + done() + }) +}) diff --git a/src/index.ts b/src/index.ts index 8ff80e5..bf1d5d9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -1,11 +1,232 @@ -import { EventEmitter } from 'events' -export default class Calculation extends EventEmitter { - add(a: number, b: number): number { - this.emit('done', 'addition') - return a + b +import axios from 'axios' +import moment from 'moment' +import lunr from 'lunr' + +export interface State { + state_id: number + state_name: string +} + +export interface District { + district_id: number + district_name: string +} + +export interface Session { + center_id: number + name: string + address: string + state_name: string + district_name: string + block_name: string + pincode: number + from: string + to: string + lat: number + long: number + fee_type: string + session_id: string + date: string + available_capacity_dose1: number + available_capacity_dose2: number + available_capacity: number + fee: string + min_age_limit: number + vaccine: string + slots: string[] +} + +const addToExisting = (obj: any, key: any, value: any) => { + if (obj[key] && !isNaN(obj[key])) + obj[key] += value + else + obj[key] = value + return obj +} + +const groupedStats = (obj: any, data: any) => { + Object.entries(data).forEach(([key, value]) => { + obj = addToExisting(obj, key, value as number) + }) +} +export class Cowinator { + baseUrl = 'https://cdn-api.co-vin.in' + locale = 'en_US' + async getData(endpoint: string) { + const { data } = await axios.get(`${this.baseUrl}${endpoint}`, { + headers: { + 'accept': 'application/json', + 'Accept-Language': this.locale, + 'User-Agent': `axios-${Math.random() * 999999}` + } + }) + return data } - subtrct(a: number, b: number): number { - this.emit('done', 'subtraction') - return a - b + async getStates(): Promise { + const { states } = await this.getData('/api/v2/admin/location/states') + return states } -} \ No newline at end of file + + async getDistricts(stateId: number): Promise { + const { districts } = await this.getData(`/api/v2/admin/location/districts/${stateId}`) + return districts + } + + async findByDistrict(districtId: number, date: Date = new Date()): Promise { + const dateStr = moment(date).format('DD-MM-YYYY') + const { sessions } = await this.getData( + `/api/v2/appointment/sessions/public/findByDistrict?district_id=${districtId}&date=${dateStr}`) + return sessions + } + + async findStateByName(query: string) { + const states = await this.getStates() + const idx = lunr(function () { + this.field('state_name') + this.field('state_id') + states.forEach((state, id) => { + this.add({ ...state, id }) + }) + }) + const result = idx.search(query) + if (result.length) { + const { ref } = result[0] + return states[Number(ref)] + } + return null + } + + async findDistrictByName(stateId: number, query: string) { + const districts = await this.getDistricts(stateId) + const idx = lunr(function () { + this.field('district_name') + this.field('district_id') + districts.forEach((district, id) => { + this.add({ ...district, id }) + }) + }) + const result = idx.search(query) + if (result.length) { + const { ref } = result[0] + return districts[Number(ref)] + } + return null + } + + async getStatsByDistrict(districtId: number, date: Date = new Date()) { + const sessions = await this.findByDistrict(districtId, date) + const stats: any = { + date, + state: '', + districtId, + district: '', + slotsAvailable: 0, + byBlock: {}, + byFeeType: {}, + byAge: {}, + noOfCentersByAge: {}, + noOfCentersWithSlotsByAge: {}, + byVaccine: {}, + centersFor18Plus: {} + } + + sessions.forEach(session => { + const { + center_id, + name, + address, + state_name, + district_name, + block_name, + pincode, + fee_type, + fee, + available_capacity_dose1, + available_capacity_dose2, + min_age_limit, + vaccine + } = session + let available_capacity = session.available_capacity > 0 ? session.available_capacity : 0 + if (available_capacity === 0) { + if (available_capacity_dose1 > 0) { + available_capacity += available_capacity_dose1 + } + if (session.available_capacity_dose2 > 0) { + available_capacity += available_capacity_dose2 + } + } + + stats.date = date + stats.state = state_name + stats.district = district_name + stats.slotsAvailable += available_capacity + stats.byBlock = addToExisting(stats.byBlock, block_name, available_capacity) + stats.byFeeType = addToExisting(stats.byFeeType, fee_type, available_capacity) + stats.byAge = addToExisting(stats.byAge, `${min_age_limit}+`, available_capacity) + stats.noOfCentersByAge = addToExisting(stats.noOfCentersByAge, `${min_age_limit}+`, 1) + stats.noOfCentersWithSlotsByAge = addToExisting(stats.noOfCentersWithSlotsByAge, `${min_age_limit}+`, available_capacity > 0 ? 1 : 0) + stats.byVaccine = addToExisting(stats.byVaccine, vaccine, available_capacity) + if (min_age_limit === 18) { + stats.centersFor18Plus = addToExisting(stats.centersFor18Plus, center_id, { + fee_type, + fee, + name, + address, + block_name, + district_name, + pincode, + available_capacity, + available_capacity_dose1, + available_capacity_dose2 + }) + } + }) + return stats + } + + async getStatsByState(stateId: number, date: Date = new Date()) { + const districts = await this.getDistricts(stateId) + const promises = districts.map(async ({ district_id }) => { + return this.getStatsByDistrict(district_id, date) + }) + const results = await Promise.all(promises) + + const stats: any = { + date: '', + state: '', + slotsAvailable: 0, + byDistrict: {}, + byFeeType: {}, + byAge: {}, + noOfCentersByAge: {}, + noOfCentersWithSlotsByAge: {}, + byVaccine: {}, + districtsFor18Plus: null + } + const districtsFor18Plus: any = {} + results.forEach(result => { + if (result.district) { + stats.date = result.date + stats.state = result.state + stats.slotsAvailable += result.slotsAvailable + stats.byDistrict = addToExisting(stats.byDistrict, result.district, { + slotsAvailable: result.slotsAvailable, + noOfCentersByAge: result.noOfCentersByAge, + noOfCentersWithSlotsByAge: result.noOfCentersWithSlotsByAge + }) + + if (result.noOfCentersWithSlotsByAge['18+']) { + districtsFor18Plus[result.district] = result.noOfCentersWithSlotsByAge['18+'] + } + + groupedStats(stats.byFeeType, result.byFeeType) + groupedStats(stats.byAge, result.byAge) + groupedStats(stats.noOfCentersByAge, result.noOfCentersByAge) + groupedStats(stats.noOfCentersWithSlotsByAge, result.noOfCentersWithSlotsByAge) + groupedStats(stats.byVaccine, result.byVaccine) + } + }) + stats.districtsFor18Plus = districtsFor18Plus + return stats + } +} diff --git a/tsconfig.json b/tsconfig.json index 510e102..960a919 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -77,7 +77,7 @@ "**/__mocks__" ], "typedocOptions": { - "exclude": "**/*+(.spec|.e2e).ts", + "exclude": ["**/*+(.spec|.e2e).ts","**/cli/*"], "includeVersion": true, "entryPoints": ["src"] } diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index a06dd85..0000000 --- a/webpack.config.js +++ /dev/null @@ -1,34 +0,0 @@ -const path = require('path'); -const CopyPlugin = require('copy-webpack-plugin'); - -module.exports = { - mode: process.env.NODE_ENV || 'development', - entry: "./src/index.ts", - devtool: 'source-map', - output: { - path: path.join(__dirname, "/dist"), - filename: "bundle.js", - library: 'CalculationBundle', - }, - resolve: { - extensions: [".tsx", ".ts", ".js", ".json"] - }, - plugins: [ - new CopyPlugin({ - patterns: [{ - from: 'public', - to: '.' - }, ], - }), - ], - module: { - rules: [ - // all files with a '.ts' or '.tsx' extension will be handled by 'ts-loader' - { - test: /\.tsx?$/, - use: ["ts-loader"], - exclude: /node_modules/ - } - ] - } -} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 06340d4..705f75d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -278,11 +278,6 @@ exec-sh "^0.3.2" minimist "^1.2.0" -"@discoveryjs/json-ext@^0.5.0": - version "0.5.2" - resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.2.tgz#8f03a22a04de437254e8ce8cc84ba39689288752" - integrity sha512-HyYEUDeIj5rRQU2Hk5HTB2uHsbRQpF70nvMhVzi+VJR0X+xNEhjPui4/kBf3VeH/wqD28PT4sVOm8qqLjBrSZg== - "@eslint/eslintrc@^0.3.0": version "0.3.0" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318" @@ -554,26 +549,10 @@ dependencies: "@babel/types" "^7.3.0" -"@types/eslint-scope@^3.7.0": - version "3.7.0" - resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.0.tgz#4792816e31119ebd506902a482caec4951fabd86" - integrity sha512-O/ql2+rrCUe2W2rs7wMR+GqPRcgB6UiqN5RhrR5xruFlY7l9YLMn0ZkDzjoHLeiFkR8MCQZVudUuuvQ2BLC9Qw== - dependencies: - "@types/eslint" "*" - "@types/estree" "*" - -"@types/eslint@*": - version "7.2.6" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.2.6.tgz#5e9aff555a975596c03a98b59ecd103decc70c3c" - integrity sha512-I+1sYH+NPQ3/tVqCeUSBwTE/0heyvtXqpIopUUArlBm0Kpocb8FbMa3AZ/ASKIFpN3rnEx932TTXDbt9OXsNDw== - dependencies: - "@types/estree" "*" - "@types/json-schema" "*" - -"@types/estree@*", "@types/estree@^0.0.46": - version "0.0.46" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe" - integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg== +"@types/debug@^4.1.5": + version "4.1.5" + resolved "https://registry.yarnpkg.com/@types/debug/-/debug-4.1.5.tgz#b14efa8852b7768d898906613c23f688713e02cd" + integrity sha512-Q1y515GcOdTHgagaVFhHnIFQ38ygs/kmxdNpvpou+raI9UO3YZcHDngBSYKQklcKlvA7iuQlmIKbzvmxcOE9CQ== "@types/graceful-fs@^4.1.2": version "4.1.4" @@ -609,11 +588,35 @@ jest-diff "^26.0.0" pretty-format "^26.0.0" -"@types/json-schema@*", "@types/json-schema@^7.0.3", "@types/json-schema@^7.0.6": +"@types/json-schema@^7.0.3": version "7.0.7" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" integrity sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA== +"@types/lodash@^4.14.156": + version "4.14.170" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.170.tgz#0d67711d4bf7f4ca5147e9091b847479b87925d6" + integrity sha512-bpcvu/MKHHeYX+qeEN8GE7DIravODWdACVA1ctevD8CN24RhPZIKMn9ntfAsrvLfSX3cR5RrBKAbYm9bGs0A+Q== + +"@types/lunr@^2.3.3": + version "2.3.3" + resolved "https://registry.yarnpkg.com/@types/lunr/-/lunr-2.3.3.tgz#ec985618fd2712c010f8edab4f1ae7784ad7c583" + integrity sha512-09sXZZVsB3Ib41U0fC+O1O+4UOZT1bl/e+/QubPxpqDWHNEchvx/DEb1KJMOwq6K3MTNzZFoNSzVdR++o1DVnw== + +"@types/node-cron@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/node-cron/-/node-cron-2.0.3.tgz#b5bb940523d265f6a36548856ec0c278ea5a35d6" + integrity sha512-gwBBGeY2XeYBLE0R01K9Sm2hvNcPGmoloL6aqthA3QmBB1GYXTHIJ42AGZL7bdXBRiwbRV8b6NB5iKpl20R3gw== + dependencies: + "@types/tz-offset" "*" + +"@types/node-notifier@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@types/node-notifier/-/node-notifier-8.0.0.tgz#51100d67155ed1500a8aaa633987109f59a0637d" + integrity sha512-CseIDQOC/I+yvj/4ItpG4ATcwooQlGPDDJweII8nspjjZg4ZBuvkyHg9P81QkElgU9FpYlb5A27BRggD3idTCQ== + dependencies: + "@types/node" "*" + "@types/node@*": version "14.14.25" resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.25.tgz#15967a7b577ff81383f9b888aa6705d43fbbae93" @@ -639,6 +642,21 @@ resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== +"@types/tz-offset@*": + version "0.0.0" + resolved "https://registry.yarnpkg.com/@types/tz-offset/-/tz-offset-0.0.0.tgz#d58f1cebd794148d245420f8f0660305d320e565" + integrity sha512-XLD/llTSB6EBe3thkN+/I0L+yCTB6sjrcVovQdx2Cnl6N6bTzHmwe/J8mWnsXFgxLrj/emzdv8IR4evKYG2qxQ== + +"@types/url-join@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/url-join/-/url-join-4.0.0.tgz#72eff71648a429c7d4acf94e03780e06671369bd" + integrity sha512-awrJu8yML4E/xTwr2EMatC+HBnHGoDxc2+ImA9QyeUELI1S7dOCIZcyjki1rkwoA8P2D2NVgLAJLjnclkdLtAw== + +"@types/warning@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/warning/-/warning-3.0.0.tgz#0d2501268ad8f9962b740d387c4654f5f8e23e52" + integrity sha1-DSUBJorY+ZYrdA04fEZU9fjiPlI= + "@types/yargs-parser@*": version "20.2.0" resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" @@ -722,154 +740,6 @@ "@typescript-eslint/types" "4.14.2" eslint-visitor-keys "^2.0.0" -"@webassemblyjs/ast@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.0.tgz#a5aa679efdc9e51707a4207139da57920555961f" - integrity sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg== - dependencies: - "@webassemblyjs/helper-numbers" "1.11.0" - "@webassemblyjs/helper-wasm-bytecode" "1.11.0" - -"@webassemblyjs/floating-point-hex-parser@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz#34d62052f453cd43101d72eab4966a022587947c" - integrity sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA== - -"@webassemblyjs/helper-api-error@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz#aaea8fb3b923f4aaa9b512ff541b013ffb68d2d4" - integrity sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w== - -"@webassemblyjs/helper-buffer@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz#d026c25d175e388a7dbda9694e91e743cbe9b642" - integrity sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA== - -"@webassemblyjs/helper-numbers@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz#7ab04172d54e312cc6ea4286d7d9fa27c88cd4f9" - integrity sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ== - dependencies: - "@webassemblyjs/floating-point-hex-parser" "1.11.0" - "@webassemblyjs/helper-api-error" "1.11.0" - "@xtuc/long" "4.2.2" - -"@webassemblyjs/helper-wasm-bytecode@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz#85fdcda4129902fe86f81abf7e7236953ec5a4e1" - integrity sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA== - -"@webassemblyjs/helper-wasm-section@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz#9ce2cc89300262509c801b4af113d1ca25c1a75b" - integrity sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/helper-buffer" "1.11.0" - "@webassemblyjs/helper-wasm-bytecode" "1.11.0" - "@webassemblyjs/wasm-gen" "1.11.0" - -"@webassemblyjs/ieee754@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz#46975d583f9828f5d094ac210e219441c4e6f5cf" - integrity sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA== - dependencies: - "@xtuc/ieee754" "^1.2.0" - -"@webassemblyjs/leb128@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.0.tgz#f7353de1df38aa201cba9fb88b43f41f75ff403b" - integrity sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g== - dependencies: - "@xtuc/long" "4.2.2" - -"@webassemblyjs/utf8@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.0.tgz#86e48f959cf49e0e5091f069a709b862f5a2cadf" - integrity sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw== - -"@webassemblyjs/wasm-edit@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz#ee4a5c9f677046a210542ae63897094c2027cb78" - integrity sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/helper-buffer" "1.11.0" - "@webassemblyjs/helper-wasm-bytecode" "1.11.0" - "@webassemblyjs/helper-wasm-section" "1.11.0" - "@webassemblyjs/wasm-gen" "1.11.0" - "@webassemblyjs/wasm-opt" "1.11.0" - "@webassemblyjs/wasm-parser" "1.11.0" - "@webassemblyjs/wast-printer" "1.11.0" - -"@webassemblyjs/wasm-gen@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz#3cdb35e70082d42a35166988dda64f24ceb97abe" - integrity sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/helper-wasm-bytecode" "1.11.0" - "@webassemblyjs/ieee754" "1.11.0" - "@webassemblyjs/leb128" "1.11.0" - "@webassemblyjs/utf8" "1.11.0" - -"@webassemblyjs/wasm-opt@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz#1638ae188137f4bb031f568a413cd24d32f92978" - integrity sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/helper-buffer" "1.11.0" - "@webassemblyjs/wasm-gen" "1.11.0" - "@webassemblyjs/wasm-parser" "1.11.0" - -"@webassemblyjs/wasm-parser@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz#3e680b8830d5b13d1ec86cc42f38f3d4a7700754" - integrity sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/helper-api-error" "1.11.0" - "@webassemblyjs/helper-wasm-bytecode" "1.11.0" - "@webassemblyjs/ieee754" "1.11.0" - "@webassemblyjs/leb128" "1.11.0" - "@webassemblyjs/utf8" "1.11.0" - -"@webassemblyjs/wast-printer@1.11.0": - version "1.11.0" - resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz#680d1f6a5365d6d401974a8e949e05474e1fab7e" - integrity sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ== - dependencies: - "@webassemblyjs/ast" "1.11.0" - "@xtuc/long" "4.2.2" - -"@webpack-cli/configtest@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-1.0.1.tgz#241aecfbdc715eee96bed447ed402e12ec171935" - integrity sha512-B+4uBUYhpzDXmwuo3V9yBH6cISwxEI4J+NO5ggDaGEEHb0osY/R7MzeKc0bHURXQuZjMM4qD+bSJCKIuI3eNBQ== - -"@webpack-cli/info@^1.2.2": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-1.2.2.tgz#ef3c0cd947a1fa083e174a59cb74e0b6195c236c" - integrity sha512-5U9kUJHnwU+FhKH4PWGZuBC1hTEPYyxGSL5jjoBI96Gx8qcYJGOikpiIpFoTq8mmgX3im2zAo2wanv/alD74KQ== - dependencies: - envinfo "^7.7.3" - -"@webpack-cli/serve@^1.3.0": - version "1.3.0" - resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-1.3.0.tgz#2730c770f5f1f132767c63dcaaa4ec28f8c56a6c" - integrity sha512-k2p2VrONcYVX1wRRrf0f3X2VGltLWcv+JzXRBDmvCxGlCeESx4OXw91TsWeKOkp784uNoVQo313vxJFHXPPwfw== - -"@xtuc/ieee754@^1.2.0": - version "1.2.0" - resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" - integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== - -"@xtuc/long@4.2.2": - version "4.2.2" - resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" - integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== - abab@^2.0.3: version "2.0.5" resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" @@ -898,11 +768,6 @@ acorn@^7.1.1, acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -acorn@^8.0.4: - version "8.0.5" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.0.5.tgz#a3bfb872a74a6a7f661bc81b9849d9cac12601b7" - integrity sha512-v+DieK/HJkJOpFBETDJioequtc3PfxsWMaxIdIwujtF7FEV/MAyDQLlm6/zPvr7Mix07mLh6ccVwIsloceodlg== - aggregate-error@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" @@ -911,12 +776,7 @@ aggregate-error@^3.0.0: clean-stack "^2.0.0" indent-string "^4.0.0" -ajv-keywords@^3.5.2: - version "3.5.2" - resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" - integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== - -ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: +ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== @@ -1062,6 +922,21 @@ aws4@^1.8.0: resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== +axios-error@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/axios-error/-/axios-error-1.0.4.tgz#020b3708c5319c0b7f03fd136efa27bd3925e26b" + integrity sha512-ay1l7dXNW288c39KcNAijpE3w8X3tP4V3Hf5yttKp4Kacrq5mnL7s0Z9GXYHRProTvRXytvs4SOriBlsGcVlfA== + dependencies: + axios "^0.21.1" + type-fest "^0.15.1" + +axios@^0.21.1: + version "0.21.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.21.1.tgz#22563481962f4d6bde9a76d516ef0e5d3c09b2b8" + integrity sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA== + dependencies: + follow-redirects "^1.10.0" + babel-jest@^26.6.3: version "26.6.3" resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" @@ -1128,6 +1003,11 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= +base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + base@^0.11.1: version "0.11.2" resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" @@ -1153,6 +1033,15 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -1189,17 +1078,6 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browserslist@^4.14.5: - version "4.16.3" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.3.tgz#340aa46940d7db878748567c5dea24a48ddf3717" - integrity sha512-vIyhWmIkULaq04Gt93txdh+j02yX/JzlyhLYbV3YQCn/zvES3JnY7TifHHvvr1w5hTDluNKMkV05cs4vy8Q7sw== - dependencies: - caniuse-lite "^1.0.30001181" - colorette "^1.2.1" - electron-to-chromium "^1.3.649" - escalade "^3.1.1" - node-releases "^1.1.70" - bs-logger@0.x: version "0.2.6" resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" @@ -1219,6 +1097,14 @@ buffer-from@1.x, buffer-from@^1.0.0: resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -1239,6 +1125,14 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camel-case@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.2.tgz#9728072a954f805228225a6deea6b38461e1bd5a" + integrity sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw== + dependencies: + pascal-case "^3.1.2" + tslib "^2.0.3" + camelcase@^5.0.0, camelcase@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" @@ -1249,11 +1143,6 @@ camelcase@^6.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== -caniuse-lite@^1.0.30001181: - version "1.0.30001185" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001185.tgz#3482a407d261da04393e2f0d61eefbc53be43b95" - integrity sha512-Fpi4kVNtNvJ15H0F6vwmXtb3tukv3Zg3qhKkOGUq7KJ1J6b9kf4dnNgtEAFXhRsJo0gNj9W60+wBvn0JcTvdTg== - capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -1288,13 +1177,6 @@ char-regex@^1.0.2: resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== -chrome-trace-event@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz#234090ee97c7d4ad1a2c4beae27505deffc608a4" - integrity sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ== - dependencies: - tslib "^1.9.0" - ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" @@ -1327,6 +1209,11 @@ cli-cursor@^3.1.0: dependencies: restore-cursor "^3.1.0" +cli-spinners@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.0.tgz#36c7dc98fb6a9a76bd6238ec3f77e2425627e939" + integrity sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q== + cli-truncate@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" @@ -1344,14 +1231,19 @@ cliui@^6.0.0: strip-ansi "^6.0.0" wrap-ansi "^6.2.0" -clone-deep@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" - integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== dependencies: - is-plain-object "^2.0.4" - kind-of "^6.0.2" - shallow-clone "^3.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= co@^4.6.0: version "4.6.0" @@ -1395,11 +1287,6 @@ color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -colorette@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" - integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== - colors@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" @@ -1412,21 +1299,11 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@^2.20.0: - version "2.20.3" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" - integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== - commander@^6.2.0: version "6.2.1" resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== -commander@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-7.0.0.tgz#3e2bbfd8bb6724760980988fb5b22b7ee6b71ab2" - integrity sha512-ovx/7NkTrnPuIV8sqk/GjUIIM1+iUQeqA3ye2VNpq9sVoiZsooObWlQy+OPWGI17GDaEoybuAGJm6U8yC077BA== - compare-versions@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" @@ -1454,20 +1331,6 @@ copy-descriptor@^0.1.0: resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= -copy-webpack-plugin@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-7.0.0.tgz#3506f867ca6e861ee2769d4deaf8fa0d2563ada9" - integrity sha512-SLjQNa5iE3BoCP76ESU9qYo9ZkEWtXoZxDurHoqPchAFRblJ9g96xTeC560UXBMre1Nx6ixIIUfiY3VcjpJw3g== - dependencies: - fast-glob "^3.2.4" - glob-parent "^5.1.1" - globby "^11.0.1" - loader-utils "^2.0.0" - normalize-path "^3.0.0" - p-limit "^3.0.2" - schema-utils "^3.0.0" - serialize-javascript "^5.0.1" - core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" @@ -1495,7 +1358,7 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: +cross-spawn@^7.0.0, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -1581,6 +1444,13 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -1639,6 +1509,14 @@ domexception@^2.0.1: dependencies: webidl-conversions "^5.0.0" +dot-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" + integrity sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + ecc-jsbn@~0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" @@ -1647,11 +1525,6 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -electron-to-chromium@^1.3.649: - version "1.3.657" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.657.tgz#a9c307f2612681245738bb8d36d997cbb568d481" - integrity sha512-/9ROOyvEflEbaZFUeGofD+Tqs/WynbSTbNgNF+/TJJxH1ePD/e6VjZlDJpW3FFFd3nj5l3Hd8ki2vRwy+gyRFw== - emittery@^0.7.1: version "0.7.2" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" @@ -1683,14 +1556,6 @@ enhanced-resolve@^4.0.0: memory-fs "^0.5.0" tapable "^1.0.0" -enhanced-resolve@^5.7.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz#525c5d856680fbd5052de453ac83e32049958b5c" - integrity sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw== - dependencies: - graceful-fs "^4.2.4" - tapable "^2.2.0" - enquirer@^2.3.5, enquirer@^2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" @@ -1698,11 +1563,6 @@ enquirer@^2.3.5, enquirer@^2.3.6: dependencies: ansi-colors "^4.1.1" -envinfo@^7.7.3: - version "7.7.4" - resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.7.4.tgz#c6311cdd38a0e86808c1c9343f667e4267c4a320" - integrity sha512-TQXTYFVVwwluWSFis6K2XKxgrD22jEv0FTuLCQI+OjH7rn93+iY0fSSFM5lrSxFY+H1+B0/cvvlamr3UsBivdQ== - errno@^0.1.3: version "0.1.8" resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" @@ -1717,11 +1577,6 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" -es-module-lexer@^0.3.26: - version "0.3.26" - resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.3.26.tgz#7b507044e97d5b03b01d4392c74ffeb9c177a83b" - integrity sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA== - escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -1860,11 +1715,6 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== -events@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.2.0.tgz#93b87c18f8efcd4202a461aec4dfc0556b639379" - integrity sha512-/46HWwbfCX2xTawVfkKLGxMifJYQBWMwY1mjywRtb4c9x8l5NP3KoJtnIOiL1hfdRkIuYhETxQlo62IF8tcnlg== - exec-sh@^0.3.2: version "0.3.4" resolved "https://registry.yarnpkg.com/exec-sh/-/exec-sh-0.3.4.tgz#3a018ceb526cc6f6df2bb504b2bfe8e3a4934ec5" @@ -1898,21 +1748,6 @@ execa@^4.0.0, execa@^4.1.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" -execa@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-5.0.0.tgz#4029b0007998a841fbd1032e5f4de86a3c1e3376" - integrity sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ== - dependencies: - cross-spawn "^7.0.3" - get-stream "^6.0.0" - human-signals "^2.1.0" - is-stream "^2.0.0" - merge-stream "^2.0.0" - npm-run-path "^4.0.1" - onetime "^5.1.2" - signal-exit "^3.0.3" - strip-final-newline "^2.0.0" - exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -1992,7 +1827,7 @@ fast-deep-equal@^3.1.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-glob@^3.1.1, fast-glob@^3.2.4: +fast-glob@^3.1.1: version "3.2.5" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.5.tgz#7939af2a656de79a4f1901903ee8adcaa7cb9661" integrity sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg== @@ -2014,11 +1849,6 @@ fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fastest-levenshtein@^1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz#9990f7d3a88cc5a9ffd1f1745745251700d497e2" - integrity sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow== - fastq@^1.6.0: version "1.10.1" resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.10.1.tgz#8b8f2ac8bf3632d67afcd65dac248d5fdc45385e" @@ -2100,6 +1930,11 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== +follow-redirects@^1.10.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.1.tgz#d9114ded0a1cfdd334e164e6662ad02bfd91ff43" + integrity sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg== + for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -2161,7 +1996,7 @@ gensync@^1.0.0-beta.1: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== -get-caller-file@^2.0.1: +get-caller-file@^2.0.1, get-caller-file@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== @@ -2190,11 +2025,6 @@ get-stream@^5.0.0: dependencies: pump "^3.0.0" -get-stream@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" - integrity sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg== - get-value@^2.0.3, get-value@^2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" @@ -2207,18 +2037,13 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" -glob-parent@^5.0.0, glob-parent@^5.1.0, glob-parent@^5.1.1: +glob-parent@^5.0.0, glob-parent@^5.1.0: version "5.1.1" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== dependencies: is-glob "^4.0.1" -glob-to-regexp@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" - integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== - glob@^7.0.0, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" @@ -2369,11 +2194,6 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== -human-signals@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" - integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== - husky@^4.3.8: version "4.3.8" resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.8.tgz#31144060be963fd6850e5cc8f019a1dfe194296d" @@ -2397,6 +2217,11 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -2441,7 +2266,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@~2.0.3: +inherits@2, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -2451,11 +2276,6 @@ interpret@^1.0.0: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== -interpret@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" - integrity sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw== - ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" @@ -2570,6 +2390,11 @@ is-glob@^4.0.0, is-glob@^4.0.1: dependencies: is-extglob "^2.1.1" +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -2619,6 +2444,11 @@ is-typedarray@^1.0.0, is-typedarray@~1.0.0: resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + is-windows@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" @@ -3072,7 +2902,7 @@ jest@^26.6.3: import-local "^3.0.2" jest-cli "^26.6.3" -js-tokens@^4.0.0: +"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== @@ -3127,11 +2957,6 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== -json-parse-better-errors@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" - integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== - json-parse-even-better-errors@^2.3.0: version "2.3.1" resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" @@ -3279,11 +3104,6 @@ listr2@^3.2.2: through "^2.3.8" wrap-ansi "^7.0.0" -loader-runner@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384" - integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== - loader-utils@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.0.tgz#e4cace5b816d425a166b5f097e10cd12b36064b0" @@ -3324,6 +3144,14 @@ log-symbols@^4.0.0: dependencies: chalk "^4.0.0" +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + log-update@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" @@ -3334,6 +3162,20 @@ log-update@^4.0.0: slice-ansi "^4.0.0" wrap-ansi "^6.2.0" +loose-envify@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" + integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== + dependencies: + js-tokens "^3.0.0 || ^4.0.0" + +lower-case@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" + integrity sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg== + dependencies: + tslib "^2.0.3" + lru-cache@^5.1.1: version "5.1.1" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" @@ -3377,6 +3219,11 @@ map-cache@^0.2.2: resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= +map-obj@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.2.1.tgz#e4ea399dbc979ae735c83c863dd31bdf364277b7" + integrity sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ== + map-visit@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" @@ -3407,6 +3254,37 @@ merge2@^1.3.0: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== +messaging-api-common@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/messaging-api-common/-/messaging-api-common-1.0.4.tgz#793d5cca5e97793ecaea238ff61bd901cfffac56" + integrity sha512-riYl+FnUtbUxxBfmUXBZSw4akK9hWAGGobulT81DK4Y5s/zeCKQcwa5uKHLG5HrR0RCtATIj7tQM8J29z61jRg== + dependencies: + "@types/debug" "^4.1.5" + "@types/lodash" "^4.14.156" + "@types/url-join" "^4.0.0" + axios "^0.21.1" + camel-case "^4.1.1" + debug "^4.1.1" + lodash "^4.17.15" + map-obj "^4.1.0" + pascal-case "^3.1.1" + snake-case "^3.0.3" + url-join "^4.0.1" + +messaging-api-telegram@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/messaging-api-telegram/-/messaging-api-telegram-1.0.4.tgz#23f401a613008fc3e2e006a980d7fd14b7602500" + integrity sha512-tDEKlwPMrpbBSIbEuYI1sJhAbn858HypB5QOLdatL0u/sBGrtp5yte52xgOfb7ySnzRqI2eH6C588VFyimHwBA== + dependencies: + "@types/lodash" "^4.14.156" + "@types/warning" "^3.0.0" + axios "^0.21.1" + axios-error "^1.0.4" + lodash "^4.17.15" + messaging-api-common "^1.0.4" + ts-invariant "^0.4.4" + warning "^4.0.3" + micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" @@ -3439,7 +3317,7 @@ mime-db@1.45.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== -mime-types@^2.1.12, mime-types@^2.1.27, mime-types@~2.1.19: +mime-types@^2.1.12, mime-types@~2.1.19: version "2.1.28" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd" integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ== @@ -3476,6 +3354,18 @@ mkdirp@1.x: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +moment-timezone@^0.5.31: + version "0.5.33" + resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.33.tgz#b252fd6bb57f341c9b59a5ab61a8e51a73bbd22c" + integrity sha512-PTc2vcT8K9J5/9rDEPe5czSIKgLoGsH8UNpA4qZTVw0Vd/Uz19geE9abbIOQKaAQFcnQ3v5YEXrbSc5BpshH+w== + dependencies: + moment ">= 2.9.0" + +"moment@>= 2.9.0", moment@^2.29.1: + version "2.29.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" + integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== + ms@2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" @@ -3508,7 +3398,7 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -neo-async@^2.6.0, neo-async@^2.6.2: +neo-async@^2.6.0: version "2.6.2" resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== @@ -3518,6 +3408,21 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +no-case@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" + integrity sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg== + dependencies: + lower-case "^2.0.2" + tslib "^2.0.3" + +node-cron@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/node-cron/-/node-cron-3.0.0.tgz#b33252803e430f9cd8590cf85738efa1497a9522" + integrity sha512-DDwIvvuCwrNiaU7HEivFDULcaQualDv7KoNlB/UU1wPW0n1tDEmBJKhEIE6DlF2FuoOHcNbLJ8ITL2Iv/3AWmA== + dependencies: + moment-timezone "^0.5.31" + node-int64@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" @@ -3540,10 +3445,17 @@ node-notifier@^8.0.0: uuid "^8.3.0" which "^2.0.2" -node-releases@^1.1.70: - version "1.1.70" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.70.tgz#66e0ed0273aa65666d7fe78febe7634875426a08" - integrity sha512-Slf2s69+2/uAD79pVVQo8uSiC34+g8GWY8UH2Qtqv34ZfhYrxpYpfzs9Js9d6O0mbDmALuxaTlplnBTnSELcrw== +node-notifier@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-9.0.1.tgz#cea837f4c5e733936c7b9005e6545cea825d1af4" + integrity sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg== + dependencies: + growly "^1.3.0" + is-wsl "^2.2.0" + semver "^7.3.2" + shellwords "^0.1.1" + uuid "^8.3.0" + which "^2.0.2" normalize-package-data@^2.5.0: version "2.5.0" @@ -3574,7 +3486,7 @@ npm-run-path@^2.0.0: dependencies: path-key "^2.0.0" -npm-run-path@^4.0.0, npm-run-path@^4.0.1: +npm-run-path@^4.0.0: version "4.0.1" resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== @@ -3621,7 +3533,7 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: dependencies: wrappy "1" -onetime@^5.1.0, onetime@^5.1.2: +onetime@^5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== @@ -3664,6 +3576,21 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" +ora@^5.4.0: + version "5.4.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.0.tgz#42eda4855835b9cd14d33864c97a3c95a3f56bf4" + integrity sha512-1StwyXQGoU6gdjYkyVcqOLnVlbKj+6yPNNOxJVgpt9t4eksKjiriiHuxktLYkgllwk+D6MbC4ihH84L1udRXPg== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + p-each-series@^2.1.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" @@ -3681,7 +3608,7 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2, p-limit@^3.1.0: +p-limit@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== @@ -3736,6 +3663,14 @@ parse5@5.1.1: resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== +pascal-case@^3.1.1, pascal-case@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" + integrity sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g== + dependencies: + no-case "^3.0.4" + tslib "^2.0.3" + pascalcase@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" @@ -3880,13 +3815,6 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -randombytes@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" - integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== - dependencies: - safe-buffer "^5.1.0" - react-is@^17.0.1: version "17.0.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" @@ -3924,6 +3852,15 @@ readable-stream@^2.0.1: string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^3.4.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + rechoir@^0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" @@ -3931,13 +3868,6 @@ rechoir@^0.6.2: dependencies: resolve "^1.1.6" -rechoir@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" - integrity sha512-ADsDEH2bvbjltXEP+hTIAmeFekTFK0V2BTxMkok6qILyAJEXV0AFfoWcAq4yfll5VdIMd/RVXq0lR+wQi5ZU3Q== - dependencies: - resolve "^1.9.0" - regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" @@ -4045,7 +3975,7 @@ resolve-url@^0.2.1: resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.18.1, resolve@^1.9.0: +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.18.1: version "1.19.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== @@ -4095,7 +4025,7 @@ rxjs@^6.6.3: dependencies: tslib "^1.9.0" -safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2: +safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== @@ -4139,15 +4069,6 @@ saxes@^5.0.0: dependencies: xmlchars "^2.2.0" -schema-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.0.0.tgz#67502f6aa2b66a2d4032b4279a2944978a0913ef" - integrity sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA== - dependencies: - "@types/json-schema" "^7.0.6" - ajv "^6.12.5" - ajv-keywords "^3.5.2" - semver-compare@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" @@ -4175,13 +4096,6 @@ semver@^6.0.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== -serialize-javascript@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" - integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== - dependencies: - randombytes "^2.1.0" - set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -4197,13 +4111,6 @@ set-value@^2.0.0, set-value@^2.0.1: is-plain-object "^2.0.3" split-string "^3.0.1" -shallow-clone@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" - integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== - dependencies: - kind-of "^6.0.2" - shebang-command@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" @@ -4250,7 +4157,7 @@ shiki@^0.9.2: onigasm "^2.2.5" vscode-textmate "^5.2.0" -signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3: +signal-exit@^3.0.0, signal-exit@^3.0.2: version "3.0.3" resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== @@ -4283,6 +4190,14 @@ slice-ansi@^4.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" +snake-case@^3.0.3: + version "3.0.4" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" + integrity sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg== + dependencies: + dot-case "^3.0.4" + tslib "^2.0.3" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -4313,11 +4228,6 @@ snapdragon@^0.8.1: source-map-resolve "^0.5.0" use "^3.1.0" -source-list-map@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" - integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== - source-map-resolve@^0.5.0: version "0.5.3" resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" @@ -4329,7 +4239,7 @@ source-map-resolve@^0.5.0: source-map-url "^0.4.0" urix "^0.1.0" -source-map-support@^0.5.6, source-map-support@~0.5.19: +source-map-support@^0.5.6: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -4352,7 +4262,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3, source-map@~0.7.2: +source-map@^0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -4452,6 +4362,13 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -4537,11 +4454,6 @@ tapable@^1.0.0: resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2" integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA== -tapable@^2.1.1, tapable@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b" - integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw== - terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -4550,27 +4462,6 @@ terminal-link@^2.0.0: ansi-escapes "^4.2.1" supports-hyperlinks "^2.0.0" -terser-webpack-plugin@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz#7effadee06f7ecfa093dbbd3e9ab23f5f3ed8673" - integrity sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q== - dependencies: - jest-worker "^26.6.2" - p-limit "^3.1.0" - schema-utils "^3.0.0" - serialize-javascript "^5.0.1" - source-map "^0.6.1" - terser "^5.5.1" - -terser@^5.5.1: - version "5.5.1" - resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289" - integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ== - dependencies: - commander "^2.20.0" - source-map "~0.7.2" - source-map-support "~0.5.19" - test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -4661,6 +4552,13 @@ tr46@^2.0.2: dependencies: punycode "^2.1.1" +ts-invariant@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86" + integrity sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA== + dependencies: + tslib "^1.9.3" + ts-jest@^26.5.0: version "26.5.0" resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-26.5.0.tgz#3e3417d91bc40178a6716d7dacc5b0505835aa21" @@ -4689,11 +4587,16 @@ ts-loader@^8.0.15: micromatch "^4.0.0" semver "^7.3.4" -tslib@^1.8.1, tslib@^1.9.0: +tslib@^1.8.1, tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.0.3: + version "2.2.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" + integrity sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w== + tsutils@^3.17.1: version "3.20.0" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.20.0.tgz#ea03ea45462e146b53d70ce0893de453ff24f698" @@ -4737,6 +4640,11 @@ type-fest@^0.11.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== +type-fest@^0.15.1: + version "0.15.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.15.1.tgz#d2c4e73d3e4a53cf1a906396dd460a1c5178ca00" + integrity sha512-n+UXrN8i5ioo7kqT/nF8xsEzLaqFra7k32SEsSPwvXVGyAcRgV/FUQN/sgfptJTR1oRmmq7z4IXMFSM7im7C9A== + type-fest@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" @@ -4821,12 +4729,17 @@ urix@^0.1.0: resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= +url-join@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7" + integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA== + use@^3.1.0: version "3.1.1" resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== -util-deprecate@~1.0.1: +util-deprecate@^1.0.1, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= @@ -4841,7 +4754,7 @@ uuid@^8.3.0: resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== -v8-compile-cache@^2.0.3, v8-compile-cache@^2.2.0: +v8-compile-cache@^2.0.3: version "2.2.0" resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== @@ -4898,13 +4811,19 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -watchpack@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.1.tgz#e99630550fca07df9f90a06056987baa40a689c7" - integrity sha512-Oo7LXCmc1eE1AjyuSBmtC3+Wy4HcV8PxWh2kP6fOl8yTlNS7r0K9l1ao2lrrUza7V39Y3D/BbJgY8VeSlc5JKw== +warning@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" + integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== dependencies: - glob-to-regexp "^0.4.1" - graceful-fs "^4.1.2" + loose-envify "^1.0.0" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" webidl-conversions@^5.0.0: version "5.0.0" @@ -4916,71 +4835,6 @@ webidl-conversions@^6.1.0: resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== -webpack-cli@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-4.5.0.tgz#b5213b84adf6e1f5de6391334c9fa53a48850466" - integrity sha512-wXg/ef6Ibstl2f50mnkcHblRPN/P9J4Nlod5Hg9HGFgSeF8rsqDGHJeVe4aR26q9l62TUJi6vmvC2Qz96YJw1Q== - dependencies: - "@discoveryjs/json-ext" "^0.5.0" - "@webpack-cli/configtest" "^1.0.1" - "@webpack-cli/info" "^1.2.2" - "@webpack-cli/serve" "^1.3.0" - colorette "^1.2.1" - commander "^7.0.0" - enquirer "^2.3.6" - execa "^5.0.0" - fastest-levenshtein "^1.0.12" - import-local "^3.0.2" - interpret "^2.2.0" - rechoir "^0.7.0" - v8-compile-cache "^2.2.0" - webpack-merge "^5.7.3" - -webpack-merge@^5.7.3: - version "5.7.3" - resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.7.3.tgz#2a0754e1877a25a8bbab3d2475ca70a052708213" - integrity sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA== - dependencies: - clone-deep "^4.0.1" - wildcard "^2.0.0" - -webpack-sources@^2.1.1: - version "2.2.0" - resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-2.2.0.tgz#058926f39e3d443193b6c31547229806ffd02bac" - integrity sha512-bQsA24JLwcnWGArOKUxYKhX3Mz/nK1Xf6hxullKERyktjNMC4x8koOeaDNTA2fEJ09BdWLbM/iTW0ithREUP0w== - dependencies: - source-list-map "^2.0.1" - source-map "^0.6.1" - -webpack@^5.21.1: - version "5.21.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.21.1.tgz#a5a13965187deeaa674a0ecea219b61060a2c38f" - integrity sha512-H/fjQiDETEZDKoZm/LhvDBxOIKf9rfOdqb2pKTHRvBFMIRtwAwYlPCgBd0gc5xiDG5DqkxAiFZgAF/4H41wMuQ== - dependencies: - "@types/eslint-scope" "^3.7.0" - "@types/estree" "^0.0.46" - "@webassemblyjs/ast" "1.11.0" - "@webassemblyjs/wasm-edit" "1.11.0" - "@webassemblyjs/wasm-parser" "1.11.0" - acorn "^8.0.4" - browserslist "^4.14.5" - chrome-trace-event "^1.0.2" - enhanced-resolve "^5.7.0" - es-module-lexer "^0.3.26" - eslint-scope "^5.1.1" - events "^3.2.0" - glob-to-regexp "^0.4.1" - graceful-fs "^4.2.4" - json-parse-better-errors "^1.0.2" - loader-runner "^4.2.0" - mime-types "^2.1.27" - neo-async "^2.6.2" - schema-utils "^3.0.0" - tapable "^2.1.1" - terser-webpack-plugin "^5.1.1" - watchpack "^2.0.0" - webpack-sources "^2.1.1" - whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" @@ -5026,11 +4880,6 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -wildcard@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec" - integrity sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw== - word-wrap@^1.2.3, word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -5094,6 +4943,11 @@ y18n@^4.0.0: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + yallist@^3.0.2: version "3.1.1" resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" @@ -5122,6 +4976,11 @@ yargs-parser@^18.1.2: camelcase "^5.0.0" decamelize "^1.2.0" +yargs-parser@^20.2.2: + version "20.2.7" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" + integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== + yargs@^15.4.1: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" @@ -5139,6 +4998,19 @@ yargs@^15.4.1: y18n "^4.0.0" yargs-parser "^18.1.2" +yargs@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.0.1.tgz#6a1ced4ed5ee0b388010ba9fd67af83b9362e0bb" + integrity sha512-xBBulfCc8Y6gLFcrPvtqKz9hz8SO0l1Ni8GgDekvBX2ro0HRQImDGnikfc33cgzcYUSncapnNcZDjVFIH3f6KQ== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b"