From b30b19999a85328c743266373b38df2ad8a5d3fb Mon Sep 17 00:00:00 2001 From: Antonio Pagano <645522+paganotoni@users.noreply.github.com> Date: Mon, 25 May 2020 12:21:15 -0500 Subject: [PATCH] v0.16.9 (#1996) * merge changes from buffalo-cli into main repo * cache deps before building and copying source (#1884) cache deps before building and copying source so that we don't need to re-download as much and so that source changes don't invalidate our downloaded layer * Generator resource action test breaks with unused imports fixes #1893 (#1894) * Generator resource action test breaks with unused imports fixes #1893 * break packr cache * fix broken test * update deps (#1896) * update deps * update envy * update meta * switch to tags/v3 for consistency (#1901) * update helpers/tags * update validate * try to fix mismatched imports (#1921) * fixes more broken semantic import paths (#1925) * adding a few packages to replace * Replace Azure badge with Github actions badge (#1920) Co-authored-by: Antonio Pagano * changing the packages to be replaced (#1928) * changing the packages to be replaced * adding back gobuffalo/uuid change * Merging master (#1936) * v0.16.1 (#1929) * merge changes from buffalo-cli into main repo * cache deps before building and copying source (#1884) cache deps before building and copying source so that we don't need to re-download as much and so that source changes don't invalidate our downloaded layer * Generator resource action test breaks with unused imports fixes #1893 (#1894) * Generator resource action test breaks with unused imports fixes #1893 * break packr cache * fix broken test * update deps (#1896) * update deps * update envy * update meta * switch to tags/v3 for consistency (#1901) * update helpers/tags * update validate * try to fix mismatched imports (#1921) * fixes more broken semantic import paths (#1925) * adding a few packages to replace * Replace Azure badge with Github actions badge (#1920) Co-authored-by: Antonio Pagano * changing the packages to be replaced (#1928) * changing the packages to be replaced * adding back gobuffalo/uuid change Co-authored-by: Mark Bates Co-authored-by: Dr Nic Williams Co-authored-by: HD Moore Co-authored-by: Stanislas Michalak * Add stack trace to ErrPanic event for easier debugging and monitoring (#1930) Co-authored-by: Canh Nguyen * Modifies our docker file to pull buffalo binary from releases. (#1935) * fixing docker image to use github binary Co-authored-by: Mark Bates Co-authored-by: Dr Nic Williams Co-authored-by: HD Moore Co-authored-by: Stanislas Michalak Co-authored-by: xuancanh Co-authored-by: Canh Nguyen * Update js template to support font awesome (#1933) * v0.16.1 (#1929) * merge changes from buffalo-cli into main repo * cache deps before building and copying source (#1884) cache deps before building and copying source so that we don't need to re-download as much and so that source changes don't invalidate our downloaded layer * Generator resource action test breaks with unused imports fixes #1893 (#1894) * Generator resource action test breaks with unused imports fixes #1893 * break packr cache * fix broken test * update deps (#1896) * update deps * update envy * update meta * switch to tags/v3 for consistency (#1901) * update helpers/tags * update validate * try to fix mismatched imports (#1921) * fixes more broken semantic import paths (#1925) * adding a few packages to replace * Replace Azure badge with Github actions badge (#1920) Co-authored-by: Antonio Pagano * changing the packages to be replaced (#1928) * changing the packages to be replaced * adding back gobuffalo/uuid change Co-authored-by: Mark Bates Co-authored-by: Dr Nic Williams Co-authored-by: HD Moore Co-authored-by: Stanislas Michalak * Add stack trace to ErrPanic event for easier debugging and monitoring (#1930) Co-authored-by: Canh Nguyen * Update js template to support font awesome The latest version of font-awesome requires the js file to also be present for a glyph to work. To see this work, add this code to any page template: ```html

``` Without this JS file, the glyph will not render. Co-authored-by: Antonio Pagano <645522+paganotoni@users.noreply.github.com> Co-authored-by: Mark Bates Co-authored-by: Dr Nic Williams Co-authored-by: HD Moore Co-authored-by: Stanislas Michalak Co-authored-by: xuancanh Co-authored-by: Canh Nguyen * Fixes generated package.json and resources generator (#1944) * v0.16.1 (#1929) * merge changes from buffalo-cli into main repo * cache deps before building and copying source (#1884) cache deps before building and copying source so that we don't need to re-download as much and so that source changes don't invalidate our downloaded layer * Generator resource action test breaks with unused imports fixes #1893 (#1894) * Generator resource action test breaks with unused imports fixes #1893 * break packr cache * fix broken test * update deps (#1896) * update deps * update envy * update meta * switch to tags/v3 for consistency (#1901) * update helpers/tags * update validate * try to fix mismatched imports (#1921) * fixes more broken semantic import paths (#1925) * adding a few packages to replace * Replace Azure badge with Github actions badge (#1920) Co-authored-by: Antonio Pagano * changing the packages to be replaced (#1928) * changing the packages to be replaced * adding back gobuffalo/uuid change Co-authored-by: Mark Bates Co-authored-by: Dr Nic Williams Co-authored-by: HD Moore Co-authored-by: Stanislas Michalak * Add stack trace to ErrPanic event for easier debugging and monitoring (#1930) Co-authored-by: Canh Nguyen * Modifies our docker file to pull buffalo binary from releases. (#1935) * fixing docker image to use github binary * Bump pop version (#1937) * adding resource and new app generator fixes * fixing buffalo generator to use v5 of pop * updating popper and removing repeated version of webpack-manifest * updating old tooling on the JS side * updating webpack version * updating node dependencies on fixture to remove github warnings Co-authored-by: Mark Bates Co-authored-by: Dr Nic Williams Co-authored-by: HD Moore Co-authored-by: Stanislas Michalak Co-authored-by: xuancanh Co-authored-by: Canh Nguyen * updating dockerfile to use v0.16.3 * packing * Adding new template for codeclimate code analysis (#1946) * adding new template for codeclimate code analysis * packing * Updates our coke app package.json and Yarn (#1947) * updating package.lock on the lock sample * removing old pop plugin * adding task to the fixers * removing the fixer part * Removes old buffalo-pop plugin (#1948) * removes old buffalo-pop plugin * naming change * using filepath for auto render files (#1951) * Bugfix c.Error http code (#1952) * fixes error code not being logged * adding tests for the status code when error handled fires * Allows to set test timeout (#1953) * allowing to pass timeout to the test command * packing * Fixes plush to use now plush/v4 (#1954) * Adding packr files (#1956) * Missing comments on the Plugins struct (#1958) * Adding packr files * adding a couple of comments missing * fixing mispell package (#1960) * Task #1941 (#1943) * covering non id cases on the route name generator * fixing broken tests * adding a few more test cases * moving to just use a string for simplified ID * bumping version * packing * use go 1.14 for building goreleaser binaries (#1962) * adds an extra file to our releases that will be pulled by our docker images build process (#1964) * cleaning some docker issues (#1966) * Fix GO111MODULE value in build Docker images (#1970) * Add in GZIP compression to file serving (#1969) * Add in GZIP compression to file serving * Add option to control gzip * Added genny support for CircleCI as a CI provider. (#1972) * Added genny support for CircleCI as a CI provider. * Updated circleci template * Also fixed Travis and GitLab templates * removing helpers from the Go template Engine (#1971) * adding next version * packing * making codeclimate ignore packr files * adding direct version on the docker build * fixing plugin installation * bumping version * Binding refactoring (#1975) * refactoring binding a bit * adding tests for null time decoder * removing unneeded variable * little bit of name changes * moving RequestTypeBinder interface * adding some missing comments * advancing on Marks recommendations. 1st step is to reduce the indirect behavior on the interface * back to locks * adding lock on Exec * adding those missing tests * moving time formats to the decoders section * added autoprefixer for bootstrap compilation (#1990) * Add batch mail sending (#1815) * Add batch mail sending * fix formatting * fix batch send * fix single mail check Co-authored-by: Stanislas Michalak Co-authored-by: Antonio Pagano <645522+paganotoni@users.noreply.github.com> * Updates jQuery Dependency (#1995) * updating jquery and bootstrap to pass a security warning we have in the repo * changing docker version for next release * packing * removing extra file from the releaser * adding some missing comments * removing unused fields Co-authored-by: Mark Bates Co-authored-by: Dr Nic Williams Co-authored-by: HD Moore Co-authored-by: Stanislas Michalak Co-authored-by: xuancanh Co-authored-by: Canh Nguyen Co-authored-by: Cory LaNou Co-authored-by: Vlad Artamonov <742047+vladdy@users.noreply.github.com> Co-authored-by: Vincent Chu Co-authored-by: James Turnbull Co-authored-by: arunsworld <42399533+arunsworld@users.noreply.github.com> Co-authored-by: Ilya Krasheninnikov <49644633+Ilkrash@users.noreply.github.com> --- Dockerfile.build | 4 +- Dockerfile.slim.build | 4 +- binding/binding.go | 172 +-- binding/binding_custom_decoder_test.go | 40 - binding/binding_test.go | 94 +- binding/decoders/decoders.go | 43 + binding/decoders/null_time.go | 20 + binding/decoders/null_time_test.go | 51 + binding/decoders/parse_time.go | 28 + binding/decoders/time.go | 8 + binding/decoders/time_test.go | 61 ++ binding/file.go | 57 - binding/file_request_type_binder.go | 70 ++ binding/html_content_type_binder.go | 51 + binding/json_content_type_binder.go | 25 + binding/request_binder.go | 71 ++ binding/request_binder_test.go | 71 ++ binding/types.go | 18 + binding/xml_request_type_binder.go | 25 + .../webpack/templates/package.json.tmpl | 6 +- .../webpack/templates/postcss.config.js.tmpl | 5 + .../webpack/templates/webpack.config.js.tmpl | 1 + genny/assets/webpack/webpack_test.go | 3 +- genny/build/_fixtures/coke/package.json | 4 +- genny/build/_fixtures/coke/yarn.lock | 975 +++++++++--------- mail/internal/mail/send.go | 7 +- mail/internal/mail/smtp.go | 8 +- mail/sender.go | 6 + mail/smtp_sender.go | 27 +- packrd/packed-packr.go | 6 +- render/markdown_test.go | 2 - runtime/version.go | 2 +- 32 files changed, 1155 insertions(+), 810 deletions(-) delete mode 100644 binding/binding_custom_decoder_test.go create mode 100644 binding/decoders/decoders.go create mode 100644 binding/decoders/null_time.go create mode 100644 binding/decoders/null_time_test.go create mode 100644 binding/decoders/parse_time.go create mode 100644 binding/decoders/time.go create mode 100644 binding/decoders/time_test.go create mode 100644 binding/file_request_type_binder.go create mode 100644 binding/html_content_type_binder.go create mode 100644 binding/json_content_type_binder.go create mode 100644 binding/request_binder.go create mode 100644 binding/request_binder_test.go create mode 100644 binding/types.go create mode 100644 binding/xml_request_type_binder.go create mode 100644 genny/assets/webpack/templates/postcss.config.js.tmpl diff --git a/Dockerfile.build b/Dockerfile.build index ad570dd7e..851756a33 100644 --- a/Dockerfile.build +++ b/Dockerfile.build @@ -33,8 +33,8 @@ RUN npm install -g --no-progress yarn \ RUN curl -sfL https://install.goreleaser.com/github.com/golangci/golangci-lint.sh | sh -s -- -b $(go env GOPATH)/bin v1.24.0 # Pulling docker binary from releases -RUN wget https://github.com/gobuffalo/buffalo/releases/download/v0.16.8/buffalo_0.16.8_Linux_x86_64.tar.gz \ - && tar -xzf buffalo_0.16.8_Linux_x86_64.tar.gz \ +RUN wget https://github.com/gobuffalo/buffalo/releases/download/v0.16.9/buffalo_0.16.9_Linux_x86_64.tar.gz \ + && tar -xzf buffalo_0.16.9_Linux_x86_64.tar.gz \ && mv buffalo $(go env GOPATH)/bin/buffalo RUN go get github.com/gobuffalo/buffalo-pop/v2 diff --git a/Dockerfile.slim.build b/Dockerfile.slim.build index fe61b9bce..eeaee839f 100644 --- a/Dockerfile.slim.build +++ b/Dockerfile.slim.build @@ -19,8 +19,8 @@ RUN npm i -g --no-progress yarn \ && yarn config set yarn-offline-mirror-pruning true # Pulling docker binary from releases -RUN wget https://github.com/gobuffalo/buffalo/releases/download/v0.16.8/buffalo_0.16.8_Linux_x86_64.tar.gz \ - && tar -xzf buffalo_0.16.8_Linux_x86_64.tar.gz \ +RUN wget https://github.com/gobuffalo/buffalo/releases/download/vv0.16.9/buffalo_v0.16.9_Linux_x86_64.tar.gz \ + && tar -xzf buffalo_v0.16.9_Linux_x86_64.tar.gz \ && mv buffalo $(go env GOPATH)/bin/buffalo RUN go get github.com/gobuffalo/buffalo-pop/v2 diff --git a/binding/binding.go b/binding/binding.go index 5562d10cb..88e0c9999 100644 --- a/binding/binding.go +++ b/binding/binding.go @@ -1,71 +1,56 @@ package binding import ( - "encoding/json" - "encoding/xml" - "fmt" "net/http" - "strings" - "sync" - "time" - "github.com/gobuffalo/buffalo/internal/httpx" - "github.com/gobuffalo/nulls" + "github.com/gobuffalo/buffalo/binding/decoders" "github.com/monoculum/formam" ) -// Binder takes a request and binds it to an interface. -// If there is a problem it should return an error. -type Binder func(*http.Request, interface{}) error +var ( + // MaxFileMemory can be used to set the maximum size, in bytes, for files to be + // stored in memory during uploaded for multipart requests. + // See https://golang.org/pkg/net/http/#Request.ParseMultipartForm for more + // information on how this impacts file uploads. + MaxFileMemory int64 = 5 * 1024 * 1024 -// CustomTypeDecoder converts a custom type from the request insto its exact type. -type CustomTypeDecoder func([]string) (interface{}, error) - -// binders is a map of the defined content-type related binders. -var binders = map[string]Binder{} + formDecoder = formam.NewDecoder(&formam.DecoderOptions{ + TagName: "form", + IgnoreUnknownKeys: true, + }) -var decoder *formam.Decoder -var lock = &sync.Mutex{} -var timeFormats = []string{ - time.RFC3339, - "01/02/2006", - "2006-01-02", - "2006-01-02T15:04", - time.ANSIC, - time.UnixDate, - time.RubyDate, - time.RFC822, - time.RFC822Z, - time.RFC850, - time.RFC1123, - time.RFC1123Z, - time.RFC3339Nano, - time.Kitchen, - time.Stamp, - time.StampMilli, - time.StampMicro, - time.StampNano, -} + // BaseRequestBinder is an instance of the requeBinder, it comes with preconfigured + // content type binders for HTML, JSON, XML and Files, as well as custom types decoders + // for time.Time and nulls.Time + BaseRequestBinder = NewRequestBinder( + HTMLContentTypeBinder{ + decoder: formDecoder, + }, + JSONContentTypeBinder{}, + XMLRequestTypeBinder{}, + FileRequestTypeBinder{ + decoder: formDecoder, + }, + ) +) // RegisterTimeFormats allows to add custom time layouts that // the binder will be able to use for decoding. func RegisterTimeFormats(layouts ...string) { - timeFormats = append(layouts, timeFormats...) + decoders.RegisterTimeFormats(layouts...) } -// RegisterCustomDecoder allows to define custom type decoders. +// RegisterCustomDecoder allows to define custom decoders for certain types +// In the request. func RegisterCustomDecoder(fn CustomTypeDecoder, types []interface{}, fields []interface{}) { rawFunc := (func([]string) (interface{}, error))(fn) - decoder.RegisterCustomType(rawFunc, types, fields) + formDecoder.RegisterCustomType(rawFunc, types, fields) } // Register maps a request Content-Type (application/json) // to a Binder. func Register(contentType string, fn Binder) { - lock.Lock() - defer lock.Unlock() - - binders[strings.ToLower(contentType)] = fn + BaseRequestBinder.Register(contentType, fn) } // Exec will bind the interface to the request.Body. The type of binding @@ -74,100 +59,5 @@ func Register(contentType string, fn Binder) { // is "application/xml" it will use "xml.NewDecoder". The default // binder is "https://github.com/monoculum/formam". func Exec(req *http.Request, value interface{}) error { - if ba, ok := value.(Bindable); ok { - return ba.Bind(req) - } - - ct := httpx.ContentType(req) - if ct == "" { - return fmt.Errorf("blank content type") - } - if b, ok := binders[ct]; ok { - return b(req, value) - } - return fmt.Errorf("could not find a binder for %s", ct) -} - -func init() { - decoder = formam.NewDecoder(&formam.DecoderOptions{ - TagName: "form", - IgnoreUnknownKeys: true, - }) - - decoder.RegisterCustomType(func(vals []string) (interface{}, error) { - return parseTime(vals) - }, []interface{}{time.Time{}}, nil) - - decoder.RegisterCustomType(func(vals []string) (interface{}, error) { - var ti nulls.Time - - t, err := parseTime(vals) - if err != nil { - return ti, err - } - ti.Time = t - ti.Valid = true - - return ti, nil - }, []interface{}{nulls.Time{}}, nil) - - sb := func(req *http.Request, i interface{}) error { - err := req.ParseForm() - if err != nil { - return err - } - - if err := decoder.Decode(req.Form, i); err != nil { - return err - } - return nil - } - - binders["application/html"] = sb - binders["text/html"] = sb - binders["application/x-www-form-urlencoded"] = sb - binders["html"] = sb -} - -func init() { - jb := func(req *http.Request, value interface{}) error { - return json.NewDecoder(req.Body).Decode(value) - } - - binders["application/json"] = jb - binders["text/json"] = jb - binders["json"] = jb -} - -func init() { - xb := func(req *http.Request, value interface{}) error { - return xml.NewDecoder(req.Body).Decode(value) - } - - binders["application/xml"] = xb - binders["text/xml"] = xb - binders["xml"] = xb -} - -func parseTime(vals []string) (time.Time, error) { - var t time.Time - var err error - - // don't try to parse empty time values, it will raise an error - if len(vals) == 0 || vals[0] == "" { - return t, nil - } - - for _, layout := range timeFormats { - t, err = time.Parse(layout, vals[0]) - if err == nil { - return t, nil - } - } - - if err != nil { - return t, err - } - - return t, nil + return BaseRequestBinder.Exec(req, value) } diff --git a/binding/binding_custom_decoder_test.go b/binding/binding_custom_decoder_test.go deleted file mode 100644 index 2b26b36a5..000000000 --- a/binding/binding_custom_decoder_test.go +++ /dev/null @@ -1,40 +0,0 @@ -package binding_test - -import ( - "net/http" - "testing" - - "github.com/gobuffalo/buffalo" - "github.com/gobuffalo/buffalo/binding" - "github.com/gobuffalo/httptest" - "github.com/stretchr/testify/require" -) - -type Xt struct { - Vals []string -} - -func Test_RegisterCustomDecoder(t *testing.T) { - r := require.New(t) - - binding.RegisterCustomDecoder(func(vals []string) (interface{}, error) { - return []string{"X"}, nil - }, []interface{}{[]string{}}, nil) - - type U struct { - Xt Xt - } - var ux U - app := buffalo.New(buffalo.Options{}) - app.POST("/", func(c buffalo.Context) error { - return c.Bind(&ux) - }) - - w := httptest.New(app) - res := w.HTML("/").Post(&U{ - Xt: Xt{[]string{"foo"}}, - }) - r.Equal(http.StatusOK, res.Code) - - r.Equal([]string{"X"}, ux.Xt.Vals) -} diff --git a/binding/binding_test.go b/binding/binding_test.go index e96c8b859..e9a5ea7b5 100644 --- a/binding/binding_test.go +++ b/binding/binding_test.go @@ -2,69 +2,73 @@ package binding import ( "net/http" + "net/url" "testing" - "time" "github.com/stretchr/testify/require" ) +type blogPost struct { + Tags []string + Dislikes int + Likes int32 +} + func Test_Register(t *testing.T) { r := require.New(t) - l := len(binders) + Register("foo/bar", func(*http.Request, interface{}) error { return nil }) - r.Len(binders, l+1) -} - -func TestParseTimeErrorParsing(t *testing.T) { - r := require.New(t) - _, err := parseTime([]string{"this is sparta"}) - r.Error(err) -} -func TestParseTime(t *testing.T) { + r.NotNil(BaseRequestBinder.binders["foo/bar"]) - r := require.New(t) + req, err := http.NewRequest("POST", "/", nil) + r.NoError(err) - testCases := []struct { - input string - expected time.Time - expectErr bool - }{ - { - input: "2017-01-01", - expected: time.Date(2017, time.January, 1, 0, 0, 0, 0, time.UTC), - expectErr: false, - }, - { - input: "2018-07-13T15:34", - expected: time.Date(2018, time.July, 13, 15, 34, 0, 0, time.UTC), - expectErr: false, - }, - { - input: "2018-20-10T30:15", - expected: time.Time{}, - expectErr: true, - }, + req.Header.Set("Content-Type", "foo/bar") + req.Form = url.Values{ + "Tags": []string{"AAA"}, + "Likes": []string{"12"}, + "Dislikes": []string{"1000"}, } - for _, tc := range testCases { - tt, err := parseTime([]string{tc.input}) - if !tc.expectErr { - r.NoError(err) - } - r.Equal(tc.expected, tt) - } -} + req.ParseForm() + + var post blogPost + r.NoError(Exec(req, &post)) -func TestParseTimeConflicting(t *testing.T) { - RegisterTimeFormats("2006-02-01") + r.Equal([]string(nil), post.Tags) + r.Equal(int32(0), post.Likes) + r.Equal(0, post.Dislikes) +} + +func Test_RegisterCustomDecoder(t *testing.T) { r := require.New(t) - tt, err := parseTime([]string{"2017-01-10"}) + RegisterCustomDecoder(func(vals []string) (interface{}, error) { + return []string{"X"}, nil + }, []interface{}{[]string{}}, nil) + + RegisterCustomDecoder(func(vals []string) (interface{}, error) { + return 0, nil + }, []interface{}{int(0)}, nil) + + post := blogPost{} + req, err := http.NewRequest("POST", "/", nil) r.NoError(err) - expected := time.Date(2017, time.October, 1, 0, 0, 0, 0, time.UTC) - r.Equal(expected, tt) + + req.Header.Set("Content-Type", "application/html") + req.Form = url.Values{ + "Tags": []string{"AAA"}, + "Likes": []string{"12"}, + "Dislikes": []string{"1000"}, + } + req.ParseForm() + + r.NoError(Exec(req, &post)) + r.Equal([]string{"X"}, post.Tags) + r.Equal(int32(12), post.Likes) + r.Equal(0, post.Dislikes) } diff --git a/binding/decoders/decoders.go b/binding/decoders/decoders.go new file mode 100644 index 000000000..f713f7286 --- /dev/null +++ b/binding/decoders/decoders.go @@ -0,0 +1,43 @@ +package decoders + +import ( + "sync" + "time" +) + +var ( + lock = &sync.RWMutex{} + + // timeFormats are the base time formats supported by the time.Time and + // nulls.Time Decoders you can prepend custom formats to this list + // by using RegisterTimeFormats. + timeFormats = []string{ + time.RFC3339, + "01/02/2006", + "2006-01-02", + "2006-01-02T15:04", + time.ANSIC, + time.UnixDate, + time.RubyDate, + time.RFC822, + time.RFC822Z, + time.RFC850, + time.RFC1123, + time.RFC1123Z, + time.RFC3339Nano, + time.Kitchen, + time.Stamp, + time.StampMilli, + time.StampMicro, + time.StampNano, + } +) + +// RegisterTimeFormats allows to add custom time layouts that +// the binder will be able to use for decoding. +func RegisterTimeFormats(layouts ...string) { + lock.Lock() + defer lock.Unlock() + + timeFormats = append(layouts, timeFormats...) +} diff --git a/binding/decoders/null_time.go b/binding/decoders/null_time.go new file mode 100644 index 000000000..1456965ab --- /dev/null +++ b/binding/decoders/null_time.go @@ -0,0 +1,20 @@ +package decoders + +import "github.com/gobuffalo/nulls" + +// NullTimeDecoderFn is a custom type decoder func for null.Time fields +func NullTimeDecoderFn() func([]string) (interface{}, error) { + return func(vals []string) (interface{}, error) { + var ti nulls.Time + + t, err := parseTime(vals) + if err != nil { + return ti, err + } + + ti.Time = t + ti.Valid = true + + return ti, nil + } +} diff --git a/binding/decoders/null_time_test.go b/binding/decoders/null_time_test.go new file mode 100644 index 000000000..7c6e28041 --- /dev/null +++ b/binding/decoders/null_time_test.go @@ -0,0 +1,51 @@ +package decoders + +import ( + "testing" + "time" + + "github.com/gobuffalo/nulls" + "github.com/stretchr/testify/require" +) + +func Test_NullTimeCustomDecoder_Decode(t *testing.T) { + r := require.New(t) + + testCases := []struct { + input string + expected time.Time + expectErr bool + }{ + { + input: "2017-01-01", + expected: time.Date(2017, time.January, 1, 0, 0, 0, 0, time.UTC), + }, + { + input: "2018-07-13T15:34", + expected: time.Date(2018, time.July, 13, 15, 34, 0, 0, time.UTC), + }, + { + input: "2018-20-10T30:15", + expected: time.Time{}, + }, + { + input: "", + expected: time.Time{}, + }, + } + + for _, testCase := range testCases { + + tt, err := NullTimeDecoderFn()([]string{testCase.input}) + r.IsType(tt, nulls.Time{}) + nt := tt.(nulls.Time) + + if testCase.expectErr { + r.Error(err) + r.Equal(nt.Valid, false) + continue + } + + r.Equal(testCase.expected, nt.Time) + } +} diff --git a/binding/decoders/parse_time.go b/binding/decoders/parse_time.go new file mode 100644 index 000000000..3565db026 --- /dev/null +++ b/binding/decoders/parse_time.go @@ -0,0 +1,28 @@ +package decoders + +import ( + "time" +) + +func parseTime(vals []string) (time.Time, error) { + var t time.Time + var err error + + // don't try to parse empty time values, it will raise an error + if len(vals) == 0 || vals[0] == "" { + return t, nil + } + + for _, layout := range timeFormats { + t, err = time.Parse(layout, vals[0]) + if err == nil { + return t, nil + } + } + + if err != nil { + return t, err + } + + return t, nil +} diff --git a/binding/decoders/time.go b/binding/decoders/time.go new file mode 100644 index 000000000..0959ae188 --- /dev/null +++ b/binding/decoders/time.go @@ -0,0 +1,8 @@ +package decoders + +// TimeDecoderFn is a custom type decoder func for Time fields +func TimeDecoderFn() func([]string) (interface{}, error) { + return func(vals []string) (interface{}, error) { + return parseTime(vals) + } +} diff --git a/binding/decoders/time_test.go b/binding/decoders/time_test.go new file mode 100644 index 000000000..13def98b3 --- /dev/null +++ b/binding/decoders/time_test.go @@ -0,0 +1,61 @@ +package decoders + +import ( + "testing" + "time" + + "github.com/stretchr/testify/require" +) + +func TestParseTimeErrorParsing(t *testing.T) { + r := require.New(t) + + _, err := parseTime([]string{"this is sparta"}) + r.Error(err) +} + +func TestParseTime(t *testing.T) { + r := require.New(t) + + testCases := []struct { + input string + expected time.Time + expectErr bool + }{ + { + input: "2017-01-01", + expected: time.Date(2017, time.January, 1, 0, 0, 0, 0, time.UTC), + expectErr: false, + }, + { + input: "2018-07-13T15:34", + expected: time.Date(2018, time.July, 13, 15, 34, 0, 0, time.UTC), + expectErr: false, + }, + { + input: "2018-20-10T30:15", + expected: time.Time{}, + expectErr: true, + }, + } + + for _, tc := range testCases { + tt, err := parseTime([]string{tc.input}) + if !tc.expectErr { + r.NoError(err) + } + + r.Equal(tc.expected, tt) + } +} + +func TestParseTimeConflicting(t *testing.T) { + r := require.New(t) + + RegisterTimeFormats("2006-02-01") + tt, err := parseTime([]string{"2017-01-10"}) + + r.NoError(err) + expected := time.Date(2017, time.October, 1, 0, 0, 0, 0, time.UTC) + r.Equal(expected, tt) +} diff --git a/binding/file.go b/binding/file.go index 3bf3c7fd0..62eb0a86b 100644 --- a/binding/file.go +++ b/binding/file.go @@ -2,16 +2,8 @@ package binding import ( "mime/multipart" - "net/http" - "reflect" ) -// MaxFileMemory can be used to set the maximum size, in bytes, for files to be -// stored in memory during uploaded for multipart requests. -// See https://golang.org/pkg/net/http/#Request.ParseMultipartForm for more -// information on how this impacts file uploads. -var MaxFileMemory int64 = 5 * 1024 * 1024 - // File holds information regarding an uploaded file type File struct { multipart.File @@ -29,52 +21,3 @@ func (f File) String() string { } return f.Filename } - -func init() { - sb := func(req *http.Request, i interface{}) error { - err := req.ParseMultipartForm(MaxFileMemory) - if err != nil { - return err - } - if err := decoder.Decode(req.Form, i); err != nil { - return err - } - - form := req.MultipartForm.File - if len(form) == 0 { - return nil - } - - ri := reflect.Indirect(reflect.ValueOf(i)) - rt := ri.Type() - for n := range form { - f := ri.FieldByName(n) - if !f.IsValid() { - for i := 0; i < rt.NumField(); i++ { - sf := rt.Field(i) - if sf.Tag.Get("form") == n { - f = ri.Field(i) - break - } - } - } - if !f.IsValid() { - continue - } - if _, ok := f.Interface().(File); !ok { - continue - } - mf, mh, err := req.FormFile(n) - if err != nil { - return err - } - f.Set(reflect.ValueOf(File{ - File: mf, - FileHeader: mh, - })) - } - - return nil - } - binders["multipart/form-data"] = sb -} diff --git a/binding/file_request_type_binder.go b/binding/file_request_type_binder.go new file mode 100644 index 000000000..0d99c9e7b --- /dev/null +++ b/binding/file_request_type_binder.go @@ -0,0 +1,70 @@ +package binding + +import ( + "net/http" + "reflect" + + "github.com/monoculum/formam" +) + +// FileRequestTypeBinder is in charge of binding File request types. +type FileRequestTypeBinder struct { + decoder *formam.Decoder +} + +// ContentTypes returns the list of content types for FileRequestTypeBinder +func (ht FileRequestTypeBinder) ContentTypes() []string { + return []string{ + "multipart/form-data", + } +} + +// BinderFunc that will take care of the HTML File binding +func (ht FileRequestTypeBinder) BinderFunc() Binder { + return func(req *http.Request, i interface{}) error { + err := req.ParseMultipartForm(MaxFileMemory) + if err != nil { + return err + } + + if err := ht.decoder.Decode(req.Form, i); err != nil { + return err + } + + form := req.MultipartForm.File + if len(form) == 0 { + return nil + } + + ri := reflect.Indirect(reflect.ValueOf(i)) + rt := ri.Type() + for n := range form { + f := ri.FieldByName(n) + if !f.IsValid() { + for i := 0; i < rt.NumField(); i++ { + sf := rt.Field(i) + if sf.Tag.Get("form") == n { + f = ri.Field(i) + break + } + } + } + if !f.IsValid() { + continue + } + if _, ok := f.Interface().(File); !ok { + continue + } + mf, mh, err := req.FormFile(n) + if err != nil { + return err + } + f.Set(reflect.ValueOf(File{ + File: mf, + FileHeader: mh, + })) + } + + return nil + } +} diff --git a/binding/html_content_type_binder.go b/binding/html_content_type_binder.go new file mode 100644 index 000000000..06b5ec97c --- /dev/null +++ b/binding/html_content_type_binder.go @@ -0,0 +1,51 @@ +package binding + +import ( + "net/http" + + "github.com/gobuffalo/buffalo/binding/decoders" + "github.com/monoculum/formam" +) + +// HTMLContentTypeBinder is in charge of binding HTML request types. +type HTMLContentTypeBinder struct { + decoder *formam.Decoder +} + +// NewHTMLContentTypeBinder returns an instance of HTMLContentTypeBinder with +// custom type decoders registered for Time and nulls.Time +func NewHTMLContentTypeBinder(decoder *formam.Decoder) HTMLContentTypeBinder { + htmlBinder := HTMLContentTypeBinder{ + decoder: decoder, + } + + decoder.RegisterCustomType(decoders.TimeDecoderFn(), []interface{}{}, []interface{}{}) + decoder.RegisterCustomType(decoders.NullTimeDecoderFn(), []interface{}{}, []interface{}{}) + + return htmlBinder +} + +// ContentTypes that will be used to identify HTML requests +func (ht HTMLContentTypeBinder) ContentTypes() []string { + return []string{ + "application/html", + "text/html", + "application/x-www-form-urlencoded", + "html", + } +} + +// BinderFunc that will take care of the HTML binding +func (ht HTMLContentTypeBinder) BinderFunc() Binder { + return func(req *http.Request, i interface{}) error { + err := req.ParseForm() + if err != nil { + return err + } + + if err := ht.decoder.Decode(req.Form, i); err != nil { + return err + } + return nil + } +} diff --git a/binding/json_content_type_binder.go b/binding/json_content_type_binder.go new file mode 100644 index 000000000..2baabd377 --- /dev/null +++ b/binding/json_content_type_binder.go @@ -0,0 +1,25 @@ +package binding + +import ( + "encoding/json" + "net/http" +) + +// JSONContentTypeBinder is in charge of binding JSON request types. +type JSONContentTypeBinder struct{} + +// BinderFunc returns the Binder for this JSONRequestTypeBinder +func (js JSONContentTypeBinder) BinderFunc() Binder { + return func(req *http.Request, value interface{}) error { + return json.NewDecoder(req.Body).Decode(value) + } +} + +// ContentTypes that will be wired to this the JSON Binder +func (js JSONContentTypeBinder) ContentTypes() []string { + return []string{ + "application/json", + "text/json", + "json", + } +} diff --git a/binding/request_binder.go b/binding/request_binder.go new file mode 100644 index 000000000..4e5733d8d --- /dev/null +++ b/binding/request_binder.go @@ -0,0 +1,71 @@ +package binding + +import ( + "errors" + "fmt" + "net/http" + "strings" + "sync" + + "github.com/gobuffalo/buffalo/internal/httpx" +) + +var ( + errBlankContentType = errors.New("blank content type") +) + +// RequestBinder is in charge of binding multiple requests types to +// struct. +type RequestBinder struct { + lock *sync.RWMutex + binders map[string]Binder +} + +// Register maps a request Content-Type (application/json) +// to a Binder. +func (rb *RequestBinder) Register(contentType string, fn Binder) { + rb.lock.Lock() + defer rb.lock.Unlock() + + rb.binders[strings.ToLower(contentType)] = fn +} + +// Exec binds a request with a passed value, depending on the content type +// It will look for the correct RequestTypeBinder and use it. +func (rb *RequestBinder) Exec(req *http.Request, value interface{}) error { + rb.lock.Lock() + defer rb.lock.Unlock() + + if ba, ok := value.(Bindable); ok { + return ba.Bind(req) + } + + ct := httpx.ContentType(req) + if ct == "" { + return errBlankContentType + } + + binder := rb.binders[ct] + if binder == nil { + return fmt.Errorf("could not find a binder for %s", ct) + } + + return binder(req, value) +} + +// NewRequestBinder creates our request binder with support for +// XML, JSON, HTTP and File request types. +func NewRequestBinder(requestBinders ...ContenTypeBinder) *RequestBinder { + result := &RequestBinder{ + lock: &sync.RWMutex{}, + binders: map[string]Binder{}, + } + + for _, requestBinder := range requestBinders { + for _, contentType := range requestBinder.ContentTypes() { + result.Register(contentType, requestBinder.BinderFunc()) + } + } + + return result +} diff --git a/binding/request_binder_test.go b/binding/request_binder_test.go new file mode 100644 index 000000000..5fecfe74a --- /dev/null +++ b/binding/request_binder_test.go @@ -0,0 +1,71 @@ +package binding + +import ( + "errors" + "net/http" + "strings" + "testing" + + "github.com/stretchr/testify/require" +) + +func Test_RequestBinder_Exec(t *testing.T) { + r := require.New(t) + + var used bool + BaseRequestBinder.Register("paganotoni/test", func(*http.Request, interface{}) error { + used = true + return nil + }) + + req, err := http.NewRequest("GET", "/home", strings.NewReader("")) + req.Header.Add("content-type", "paganotoni/test") + r.NoError(err) + + data := &struct{}{} + r.NoError(BaseRequestBinder.Exec(req, data)) + r.True(used) +} + +func Test_RequestBinder_Exec_BlankContentType(t *testing.T) { + r := require.New(t) + + req, err := http.NewRequest("GET", "/home", strings.NewReader("")) + r.NoError(err) + + data := &struct{}{} + r.Equal(BaseRequestBinder.Exec(req, data), errBlankContentType) +} + +func Test_RequestBinder_Exec_Bindable(t *testing.T) { + r := require.New(t) + + BaseRequestBinder.Register("paganotoni/orbison", func(req *http.Request, val interface{}) error { + switch v := val.(type) { + case orbison: + v.bound = false + } + + return errors.New("this should not be called") + }) + + req, err := http.NewRequest("GET", "/home", strings.NewReader("")) + req.Header.Add("content-type", "paganotoni/orbison") + r.NoError(err) + + data := &orbison{} + r.NoError(BaseRequestBinder.Exec(req, data)) + r.True(data.bound) +} + +func Test_RequestBinder_Exec_NoBinder(t *testing.T) { + r := require.New(t) + + req, err := http.NewRequest("GET", "/home", strings.NewReader("")) + req.Header.Add("content-type", "paganotoni/other") + r.NoError(err) + + err = BaseRequestBinder.Exec(req, &struct{}{}) + r.Error(err) + r.Equal(err.Error(), "could not find a binder for paganotoni/other") +} diff --git a/binding/types.go b/binding/types.go new file mode 100644 index 000000000..589827002 --- /dev/null +++ b/binding/types.go @@ -0,0 +1,18 @@ +package binding + +import ( + "net/http" +) + +// ContenTypeBinder are those capable of handling a request type like JSON or XML +type ContenTypeBinder interface { + BinderFunc() Binder + ContentTypes() []string +} + +// Binder takes a request and binds it to an interface. +// If there is a problem it should return an error. +type Binder func(*http.Request, interface{}) error + +// CustomTypeDecoder converts a custom type from the request into its exact type. +type CustomTypeDecoder func([]string) (interface{}, error) diff --git a/binding/xml_request_type_binder.go b/binding/xml_request_type_binder.go new file mode 100644 index 000000000..cbd67af84 --- /dev/null +++ b/binding/xml_request_type_binder.go @@ -0,0 +1,25 @@ +package binding + +import ( + "encoding/xml" + "net/http" +) + +// XMLRequestTypeBinder is in charge of binding XML request types. +type XMLRequestTypeBinder struct{} + +// BinderFunc returns the Binder for this RequestTypeBinder +func (xm XMLRequestTypeBinder) BinderFunc() Binder { + return func(req *http.Request, value interface{}) error { + return xml.NewDecoder(req.Body).Decode(value) + } +} + +// ContentTypes that will be wired to this the XML Binder +func (xm XMLRequestTypeBinder) ContentTypes() []string { + return []string{ + "application/xml", + "text/xml", + "xml", + } +} diff --git a/genny/assets/webpack/templates/package.json.tmpl b/genny/assets/webpack/templates/package.json.tmpl index 97cd3f1e4..23475a61d 100644 --- a/genny/assets/webpack/templates/package.json.tmpl +++ b/genny/assets/webpack/templates/package.json.tmpl @@ -9,10 +9,10 @@ }, "repository": "github.com/gobuffalo/buffalo", "dependencies": { - "bootstrap": "4.4.1", + "bootstrap": "4.5.0", "popper.js": "^1.16.1", "@fortawesome/fontawesome-free": "^5.12.0", - "jquery": "~3.4.1", + "jquery": "3.5.1", "jquery-ujs": "~1.2.2" }, "devDependencies": { @@ -20,11 +20,13 @@ "@babel/core": "^7.9.0", "@babel/preset-env": "^7.9.5", + "autoprefixer": "^9.7.6", "babel-loader": "^8.1.0", "css-loader": "~3.5.1", "expose-loader": "~0.7.5", "file-loader": "~6.0.0", "gopherjs-loader": "^0.0.1", + "postcss-loader": "^3.0.0", "sass-loader": "~8.0.2", "style-loader": "~1.1.3", "url-loader": "~4.1.0", diff --git a/genny/assets/webpack/templates/postcss.config.js.tmpl b/genny/assets/webpack/templates/postcss.config.js.tmpl new file mode 100644 index 000000000..cff57b574 --- /dev/null +++ b/genny/assets/webpack/templates/postcss.config.js.tmpl @@ -0,0 +1,5 @@ +module.exports = { + plugins: [ + require('autoprefixer') + ] + } diff --git a/genny/assets/webpack/templates/webpack.config.js.tmpl b/genny/assets/webpack/templates/webpack.config.js.tmpl index 2e78e2316..74ac691ec 100644 --- a/genny/assets/webpack/templates/webpack.config.js.tmpl +++ b/genny/assets/webpack/templates/webpack.config.js.tmpl @@ -57,6 +57,7 @@ const configurator = { use: [ MiniCssExtractPlugin.loader, { loader: "css-loader", options: {sourceMap: true}}, + { loader: "postcss-loader", options: {sourceMap: true}}, { loader: "sass-loader", options: {sourceMap: true}} ] }, diff --git a/genny/assets/webpack/webpack_test.go b/genny/assets/webpack/webpack_test.go index 8434bf681..3f8dfb862 100644 --- a/genny/assets/webpack/webpack_test.go +++ b/genny/assets/webpack/webpack_test.go @@ -44,6 +44,7 @@ func Test_Webpack_New(t *testing.T) { "assets/images/logo.svg", "assets/js/application.js", "package.json", + "postcss.config.js", "public/assets/.keep", "templates/application.plush.html", "webpack.config.js", @@ -73,7 +74,7 @@ func Test_Webpack_New_WithYarn(t *testing.T) { res := run.Results() r.Len(res.Commands, 1) - r.Len(res.Files, 10) + r.Len(res.Files, 11) c := res.Commands[0] r.Equal("yarnpkg install --no-progress --save", strings.Join(c.Args, " ")) diff --git a/genny/build/_fixtures/coke/package.json b/genny/build/_fixtures/coke/package.json index 5d56cf6c8..46e4a4ba6 100644 --- a/genny/build/_fixtures/coke/package.json +++ b/genny/build/_fixtures/coke/package.json @@ -9,10 +9,10 @@ }, "repository": "github.com/gobuffalo/buffalo", "dependencies": { - "bootstrap": "4.4.1", + "bootstrap": "4.5.0", "popper.js": "^1.16.1", "@fortawesome/fontawesome-free": "^5.12.0", - "jquery": "~3.4.1", + "jquery": "3.5.1", "jquery-ujs": "~1.2.2" }, "devDependencies": { diff --git a/genny/build/_fixtures/coke/yarn.lock b/genny/build/_fixtures/coke/yarn.lock index 43a54058c..22ecbc859 100644 --- a/genny/build/_fixtures/coke/yarn.lock +++ b/genny/build/_fixtures/coke/yarn.lock @@ -9,28 +9,28 @@ dependencies: "@babel/highlight" "^7.8.3" -"@babel/compat-data@^7.8.6", "@babel/compat-data@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.0.tgz#04815556fc90b0c174abd2c0c1bb966faa036a6c" - integrity sha512-zeFQrr+284Ekvd9e7KAX954LkapWiOmQtsfHirhxqfdlX6MEC32iRE+pqUGlYIBchdevaCwvzxWGSy/YBNI85g== +"@babel/compat-data@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.9.6.tgz#3f604c40e420131affe6f2c8052e9a275ae2049b" + integrity sha512-5QPTrNen2bm7RBc7dsOmcA5hbrS4O2Vhmk5XOL4zWW/zD/hV0iinpefDlkm+tBBy8kDtFaaeEvmAqt+nURAV2g== dependencies: - browserslist "^4.9.1" + browserslist "^4.11.1" invariant "^2.2.4" semver "^5.5.0" "@babel/core@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" - integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.6.tgz#d9aa1f580abf3b2286ef40b6904d390904c63376" + integrity sha512-nD3deLvbsApbHAHttzIssYqgb883yU/d9roe4RZymBCDaZryMJDbptVpEpeQuRh4BJ+SYI8le9YGxKvFEvl1Wg== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" + "@babel/generator" "^7.9.6" "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.0" - "@babel/parser" "^7.9.0" + "@babel/helpers" "^7.9.6" + "@babel/parser" "^7.9.6" "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" @@ -40,12 +40,12 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.9.0", "@babel/generator@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.5.tgz#27f0917741acc41e6eaaced6d68f96c3fa9afaf9" - integrity sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ== +"@babel/generator@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.6.tgz#5408c82ac5de98cda0d77d8124e99fa1f2170a43" + integrity sha512-+htwWKJbH2bL72HRluF8zumBxzuX0ZZUFl3JLNyoUjM/Ho8wnVpPXM6aUz8cfKDqQ/h7zHqKt4xzJteUosckqQ== dependencies: - "@babel/types" "^7.9.5" + "@babel/types" "^7.9.6" jsesc "^2.5.1" lodash "^4.17.13" source-map "^0.5.0" @@ -65,13 +65,13 @@ "@babel/helper-explode-assignable-expression" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helper-compilation-targets@^7.8.7": - version "7.8.7" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.8.7.tgz#dac1eea159c0e4bd46e309b5a1b04a66b53c1dde" - integrity sha512-4mWm8DCK2LugIS+p1yArqvG1Pf162upsIsjE7cNBjez+NjliQpVhj20obE520nao0o14DaTnFJv+Fw5a0JpoUw== +"@babel/helper-compilation-targets@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.9.6.tgz#1e05b7ccc9d38d2f8b40b458b380a04dcfadd38a" + integrity sha512-x2Nvu0igO0ejXzx09B/1fGBxY9NXQlBW2kZsSxCJft+KHN8t9XWzIvFxtPHnBOAXpVsdxZKZFbRUC8TsNKajMw== dependencies: - "@babel/compat-data" "^7.8.6" - browserslist "^4.9.1" + "@babel/compat-data" "^7.9.6" + browserslist "^4.11.1" invariant "^2.2.4" levenary "^1.1.1" semver "^5.5.0" @@ -159,12 +159,7 @@ dependencies: "@babel/types" "^7.8.3" -"@babel/helper-plugin-utils@^7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz#bbb3fbee98661c569034237cc03967ba99b4f250" - integrity sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA== - -"@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== @@ -188,14 +183,14 @@ "@babel/types" "^7.8.3" "@babel/helper-replace-supers@^7.8.3", "@babel/helper-replace-supers@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" - integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.9.6.tgz#03149d7e6a5586ab6764996cd31d6981a17e1444" + integrity sha512-qX+chbxkbArLyCImk3bWV+jB5gTNU/rsze+JlcF6Nf8tVTigPJSI1o1oBow/9Resa1yehUO9lIipsmu9oG4RzA== dependencies: "@babel/helper-member-expression-to-functions" "^7.8.3" "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/traverse" "^7.8.6" - "@babel/types" "^7.8.6" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" "@babel/helper-simple-access@^7.8.3": version "7.8.3" @@ -227,14 +222,14 @@ "@babel/traverse" "^7.8.3" "@babel/types" "^7.8.3" -"@babel/helpers@^7.9.0": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" - integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== +"@babel/helpers@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.6.tgz#092c774743471d0bb6c7de3ad465ab3d3486d580" + integrity sha512-tI4bUbldloLcHWoRUMAj4g1bF313M/o6fBKhIsb3QnGVPwRm9JsNf/gqMkQ7zjqReABiffPV6RWj7hEglID5Iw== dependencies: "@babel/template" "^7.8.3" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" + "@babel/traverse" "^7.9.6" + "@babel/types" "^7.9.6" "@babel/highlight@^7.8.3": version "7.9.0" @@ -245,10 +240,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.8.6", "@babel/parser@^7.9.0": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" - integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== +"@babel/parser@^7.8.6", "@babel/parser@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.6.tgz#3b1bbb30dabe600cd72db58720998376ff653bc7" + integrity sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q== "@babel/plugin-proposal-async-generator-functions@^7.8.3": version "7.8.3" @@ -291,10 +286,10 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-numeric-separator" "^7.8.3" -"@babel/plugin-proposal-object-rest-spread@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.5.tgz#3fd65911306d8746014ec0d0cf78f0e39a149116" - integrity sha512-VP2oXvAf7KCYTthbUHwBlewbl1Iq059f6seJGsxMizaCdgHIeczOr7FBqELhSqfkIl04Fi8okzWzl63UKbQmmg== +"@babel/plugin-proposal-object-rest-spread@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.9.6.tgz#7a093586fcb18b08266eb1a7177da671ac575b63" + integrity sha512-Ga6/fhGqA9Hj+y6whNpPv8psyaK5xzrQwSPsGPloVkvmH+PqW1ixdnfJ9uIO06OjQNYol3PMnfmJ8vfZtkzF+A== dependencies: "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-syntax-object-rest-spread" "^7.8.0" @@ -498,34 +493,34 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.3" -"@babel/plugin-transform-modules-amd@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.0.tgz#19755ee721912cf5bb04c07d50280af3484efef4" - integrity sha512-vZgDDF003B14O8zJy0XXLnPH4sg+9X5hFBBGN1V+B2rgrB+J2xIypSN6Rk9imB2hSTHQi5OHLrFWsZab1GMk+Q== +"@babel/plugin-transform-modules-amd@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.9.6.tgz#8539ec42c153d12ea3836e0e3ac30d5aae7b258e" + integrity sha512-zoT0kgC3EixAyIAU+9vfaUVKTv9IxBDSabgHoUCBP6FqEJ+iNiN7ip7NBKcYqbfUDfuC2mFCbM7vbu4qJgOnDw== dependencies: "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.0" + babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.0.tgz#e3e72f4cbc9b4a260e30be0ea59bdf5a39748940" - integrity sha512-qzlCrLnKqio4SlgJ6FMMLBe4bySNis8DFn1VkGmOcxG9gqEyPIOzeQrA//u0HAKrWpJlpZbZMPB1n/OPa4+n8g== +"@babel/plugin-transform-modules-commonjs@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.9.6.tgz#64b7474a4279ee588cacd1906695ca721687c277" + integrity sha512-7H25fSlLcn+iYimmsNe3uK1at79IE6SKW9q0/QeEHTMC9MdOZ+4bA+T1VFB5fgOqBWoqlifXRzYD0JPdmIrgSQ== dependencies: "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" "@babel/helper-simple-access" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.0" + babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-systemjs@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.0.tgz#e9fd46a296fc91e009b64e07ddaa86d6f0edeb90" - integrity sha512-FsiAv/nao/ud2ZWy4wFacoLOm5uxl0ExSQ7ErvP7jpoihLR6Cq90ilOFyX9UXct3rbtKsAiZ9kFt5XGfPe/5SQ== +"@babel/plugin-transform-modules-systemjs@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.9.6.tgz#207f1461c78a231d5337a92140e52422510d81a4" + integrity sha512-NW5XQuW3N2tTHim8e1b7qGy7s0kZ2OH3m5octc49K1SdAKGxYxeIx7hiIz05kS1R2R+hOWcsr1eYwcGhrdHsrg== dependencies: "@babel/helper-hoist-variables" "^7.8.3" "@babel/helper-module-transforms" "^7.9.0" "@babel/helper-plugin-utils" "^7.8.3" - babel-plugin-dynamic-import-node "^2.3.0" + babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-umd@^7.9.0": version "7.9.0" @@ -632,12 +627,12 @@ "@babel/helper-plugin-utils" "^7.8.3" "@babel/preset-env@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.5.tgz#8ddc76039bc45b774b19e2fc548f6807d8a8919f" - integrity sha512-eWGYeADTlPJH+wq1F0wNfPbVS1w1wtmMJiYk55Td5Yu28AsdR9AsC97sZ0Qq8fHqQuslVSIYSGJMcblr345GfQ== + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.9.6.tgz#df063b276c6455ec6fcfc6e53aacc38da9b0aea6" + integrity sha512-0gQJ9RTzO0heXOhzftog+a/WyOuqMrAIugVYxMYf83gh1CQaQDjMtsOpqOwXyDL/5JcWsrCm8l4ju8QC97O7EQ== dependencies: - "@babel/compat-data" "^7.9.0" - "@babel/helper-compilation-targets" "^7.8.7" + "@babel/compat-data" "^7.9.6" + "@babel/helper-compilation-targets" "^7.9.6" "@babel/helper-module-imports" "^7.8.3" "@babel/helper-plugin-utils" "^7.8.3" "@babel/plugin-proposal-async-generator-functions" "^7.8.3" @@ -645,7 +640,7 @@ "@babel/plugin-proposal-json-strings" "^7.8.3" "@babel/plugin-proposal-nullish-coalescing-operator" "^7.8.3" "@babel/plugin-proposal-numeric-separator" "^7.8.3" - "@babel/plugin-proposal-object-rest-spread" "^7.9.5" + "@babel/plugin-proposal-object-rest-spread" "^7.9.6" "@babel/plugin-proposal-optional-catch-binding" "^7.8.3" "@babel/plugin-proposal-optional-chaining" "^7.9.0" "@babel/plugin-proposal-unicode-property-regex" "^7.8.3" @@ -672,9 +667,9 @@ "@babel/plugin-transform-function-name" "^7.8.3" "@babel/plugin-transform-literals" "^7.8.3" "@babel/plugin-transform-member-expression-literals" "^7.8.3" - "@babel/plugin-transform-modules-amd" "^7.9.0" - "@babel/plugin-transform-modules-commonjs" "^7.9.0" - "@babel/plugin-transform-modules-systemjs" "^7.9.0" + "@babel/plugin-transform-modules-amd" "^7.9.6" + "@babel/plugin-transform-modules-commonjs" "^7.9.6" + "@babel/plugin-transform-modules-systemjs" "^7.9.6" "@babel/plugin-transform-modules-umd" "^7.9.0" "@babel/plugin-transform-named-capturing-groups-regex" "^7.8.3" "@babel/plugin-transform-new-target" "^7.8.3" @@ -690,8 +685,8 @@ "@babel/plugin-transform-typeof-symbol" "^7.8.4" "@babel/plugin-transform-unicode-regex" "^7.8.3" "@babel/preset-modules" "^0.1.3" - "@babel/types" "^7.9.5" - browserslist "^4.9.1" + "@babel/types" "^7.9.6" + browserslist "^4.11.1" core-js-compat "^3.6.2" invariant "^2.2.2" levenary "^1.1.1" @@ -709,9 +704,9 @@ esutils "^2.0.2" "@babel/runtime@^7.8.4": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06" - integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q== + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.6.tgz#a9102eb5cadedf3f31d08a9ecf294af7827ea29f" + integrity sha512-64AF1xY3OAkFHqOb9s4jpgk1Mm5vDZ4L3acHvAml+53nO1XbXLuDodsVpO4OIUsmemlUHMxNdYMNJmsvOwLrvQ== dependencies: regenerator-runtime "^0.13.4" @@ -724,25 +719,25 @@ "@babel/parser" "^7.8.6" "@babel/types" "^7.8.6" -"@babel/traverse@^7.8.3", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.5.tgz#6e7c56b44e2ac7011a948c21e283ddd9d9db97a2" - integrity sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ== +"@babel/traverse@^7.8.3", "@babel/traverse@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.6.tgz#5540d7577697bf619cc57b92aa0f1c231a94f442" + integrity sha512-b3rAHSjbxy6VEAvlxM8OV/0X4XrG72zoxme6q1MOoe2vd0bEc+TwayhuC1+Dfgqh1QEG+pj7atQqvUprHIccsg== dependencies: "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.5" + "@babel/generator" "^7.9.6" "@babel/helper-function-name" "^7.9.5" "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.9.0" - "@babel/types" "^7.9.5" + "@babel/parser" "^7.9.6" + "@babel/types" "^7.9.6" debug "^4.1.0" globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.5.tgz#89231f82915a8a566a703b3b20133f73da6b9444" - integrity sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg== +"@babel/types@^7.4.4", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5", "@babel/types@^7.9.6": + version "7.9.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.6.tgz#2c5502b427251e9de1bd2dff95add646d95cc9f7" + integrity sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA== dependencies: "@babel/helper-validator-identifier" "^7.9.5" lodash "^4.17.13" @@ -956,20 +951,10 @@ ajv-keywords@^3.1.0, ajv-keywords@^3.4.1: resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.4.1.tgz#ef916e271c64ac12171fd8384eaae6b2345854da" integrity sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ== -ajv@^6.1.0, ajv@^6.10.2, ajv@^6.5.5: - version "6.10.2" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.10.2.tgz#d3cea04d6b017b2894ad69040fec8b623eb4bd52" - integrity sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw== - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ajv@^6.12.0: - version "6.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" - integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== +ajv@^6.1.0, ajv@^6.10.2, ajv@^6.12.0, ajv@^6.5.5: + version "6.12.2" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.2.tgz#c629c5eced17baf314437918d2da88c99d5958cd" + integrity sha512-k+V+hzjm5q/Mr8ef/1Y9goCmlsK4I6Sm74teeyGvFk1XrOsbsKLjEdrvny42CZ+a8sXbk8KWpY/bDwS+FLL2UQ== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" @@ -1031,7 +1016,7 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@^3.1.1: +anymatch@^3.1.1, anymatch@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== @@ -1166,9 +1151,9 @@ aws-sign2@~0.7.0: integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.8.0.tgz#f0e003d9ca9e7f59c7a508945d7b2ef9a04a542f" - integrity sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ== + version "1.10.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2" + integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA== babel-loader@^8.1.0: version "8.1.0" @@ -1181,10 +1166,10 @@ babel-loader@^8.1.0: pify "^4.0.1" schema-utils "^2.6.5" -babel-plugin-dynamic-import-node@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz#f00f507bdaa3c3e3ff6e7e5e98d90a7acab96f7f" - integrity sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ== +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== dependencies: object.assign "^4.1.0" @@ -1228,6 +1213,11 @@ binary-extensions@^1.0.0: resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== +binary-extensions@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.0.0.tgz#23c0df14f6a88077f5f986c0d167ec03c3d5537c" + integrity sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow== + bindings@^1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" @@ -1247,10 +1237,15 @@ bluebird@^3.5.5: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.1.1, bn.js@^4.4.0: - version "4.11.8" - resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.8.tgz#2cde09eb5ee341f484746bb0309b3253b1b1442f" - integrity sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA== +bn.js@^4.0.0, bn.js@^4.1.0, bn.js@^4.4.0: + version "4.11.9" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-4.11.9.tgz#26d556829458f9d1e81fc48952493d0ba3507828" + integrity sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw== + +bn.js@^5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" + integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== body@^5.1.0: version "5.1.0" @@ -1262,10 +1257,10 @@ body@^5.1.0: raw-body "~1.1.0" safe-json-parse "~1.0.1" -bootstrap@4.4.1: - version "4.4.1" - resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.4.1.tgz#8582960eea0c5cd2bede84d8b0baf3789c3e8b01" - integrity sha512-tbx5cHubwE6e2ZG7nqM3g/FZ5PQEDMWmMGNrCUBVRPHXTJaH7CBDdsLeu3eCh3B1tzAxTnAbtmrzvWEvT2NNEA== +bootstrap@4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.5.0.tgz#97d9dbcb5a8972f8722c9962483543b907d9b9ec" + integrity sha512-Z93QoXvodoVslA+PWNdk23Hze4RBYIkpb5h8I2HY2Tu2h7A0LpAgLcyrhrSUyo2/Oxm2l1fRZPs1e5hnxnliXA== brace-expansion@^1.1.7: version "1.1.11" @@ -1291,6 +1286,13 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" +braces@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + brorand@^1.0.1: version "1.1.0" resolved "https://registry.yarnpkg.com/brorand/-/brorand-1.1.0.tgz#12c25efe40a45e3c323eb8675a0a0ce57b22371f" @@ -1327,7 +1329,7 @@ browserify-des@^1.0.0: inherits "^2.0.1" safe-buffer "^5.1.2" -browserify-rsa@^4.0.0: +browserify-rsa@^4.0.0, browserify-rsa@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/browserify-rsa/-/browserify-rsa-4.0.1.tgz#21e0abfaf6f2029cf2fafb133567a701d4135524" integrity sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ= @@ -1336,17 +1338,19 @@ browserify-rsa@^4.0.0: randombytes "^2.0.1" browserify-sign@^4.0.0: - version "4.0.4" - resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.0.4.tgz#aa4eb68e5d7b658baa6bf6a57e630cbd7a93d298" - integrity sha1-qk62jl17ZYuqa/alfmMMvXqT0pg= - dependencies: - bn.js "^4.1.1" - browserify-rsa "^4.0.0" - create-hash "^1.1.0" - create-hmac "^1.1.2" - elliptic "^6.0.0" - inherits "^2.0.1" - parse-asn1 "^5.0.0" + version "4.2.0" + resolved "https://registry.yarnpkg.com/browserify-sign/-/browserify-sign-4.2.0.tgz#545d0b1b07e6b2c99211082bf1b12cce7a0b0e11" + integrity sha512-hEZC1KEeYuoHRqhGhTy6gWrpJA3ZDjFWv0DE61643ZnOXAKJb3u7yWcrU0mMc9SwAqK1n7myPGndkp0dFG7NFA== + dependencies: + bn.js "^5.1.1" + browserify-rsa "^4.0.1" + create-hash "^1.2.0" + create-hmac "^1.1.7" + elliptic "^6.5.2" + inherits "^2.0.4" + parse-asn1 "^5.1.5" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" browserify-zlib@^0.2.0: version "0.2.0" @@ -1355,13 +1359,13 @@ browserify-zlib@^0.2.0: dependencies: pako "~1.0.5" -browserslist@^4.8.3, browserslist@^4.9.1: - version "4.11.1" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.11.1.tgz#92f855ee88d6e050e7e7311d987992014f1a1f1b" - integrity sha512-DCTr3kDrKEYNw6Jb9HFxVLQNaue8z+0ZfRBRjmCunKDEXEBajKDj2Y+Uelg+Pi29OnvaSGwjOsnRyNEkXzHg5g== +browserslist@^4.11.1, browserslist@^4.8.5: + version "4.12.0" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.12.0.tgz#06c6d5715a1ede6c51fc39ff67fd647f740b656d" + integrity sha512-UH2GkcEDSI0k/lRkuDSzFl9ZZ87skSy9w2XAn1MsZnL+4c4rqbBd3e82UWHbYDpztABrPBhZsTEeuxVfHppqDg== dependencies: - caniuse-lite "^1.0.30001038" - electron-to-chromium "^1.3.390" + caniuse-lite "^1.0.30001043" + electron-to-chromium "^1.3.413" node-releases "^1.1.53" pkg-up "^2.0.0" @@ -1394,7 +1398,7 @@ bytes@1: resolved "https://registry.yarnpkg.com/bytes/-/bytes-1.0.0.tgz#3569ede8ba34315fab99c3e92cb04c7220de1fa8" integrity sha1-NWnt6Lo0MV+rmcPpLLBMciDeH6g= -cacache@^12.0.2: +cacache@^12.0.2, cacache@^12.0.3: version "12.0.4" resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.4.tgz#668bcbd105aeb5f1d92fe25570ec9525c8faa40c" integrity sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ== @@ -1415,27 +1419,6 @@ cacache@^12.0.2: unique-filename "^1.1.1" y18n "^4.0.0" -cacache@^12.0.3: - version "12.0.3" - resolved "https://registry.yarnpkg.com/cacache/-/cacache-12.0.3.tgz#be99abba4e1bf5df461cd5a2c1071fc432573390" - integrity sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw== - dependencies: - bluebird "^3.5.5" - chownr "^1.1.1" - figgy-pudding "^3.5.1" - glob "^7.1.4" - graceful-fs "^4.1.15" - infer-owner "^1.0.3" - lru-cache "^5.1.1" - mississippi "^3.0.0" - mkdirp "^0.5.1" - move-concurrently "^1.0.1" - promise-inflight "^1.0.1" - rimraf "^2.6.3" - ssri "^6.0.1" - unique-filename "^1.1.1" - y18n "^4.0.0" - cacache@^13.0.1: version "13.0.1" resolved "https://registry.yarnpkg.com/cacache/-/cacache-13.0.1.tgz#a8000c21697089082f85287a1aec6e382024a71c" @@ -1498,10 +1481,10 @@ camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== -caniuse-lite@^1.0.30001038: - version "1.0.30001040" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001040.tgz#103fc8e6eb1d7397e95134cd0e996743353d58ea" - integrity sha512-Ep0tEPeI5wCvmJNrXjE3etgfI+lkl1fTDU6Y3ZH1mhrjkPlVI9W4pcKbMo+BQLpEWKVYYp2EmYaRsqpPC3k7lQ== +caniuse-lite@^1.0.30001043: + version "1.0.30001065" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001065.tgz#e8d7fef61cdfd8a7107493ad6bf551a4eb59c68f" + integrity sha512-DDxCLgJ266YnAHQv0jS1wdOaihRFF52Zgmlag39sQJVy2H46oROpJp4hITstqhdB8qnHSrKNoAEkQA9L/oYF9A== caseless@~0.12.0: version "0.12.0" @@ -1555,10 +1538,25 @@ chokidar@^2.1.8: optionalDependencies: fsevents "^1.2.7" +chokidar@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.0.tgz#b30611423ce376357c765b9b8f904b9fba3c0be8" + integrity sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.4.0" + optionalDependencies: + fsevents "~2.1.2" + chownr@^1.1.1, chownr@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" - integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== + version "1.1.4" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.4.tgz#6fc9d7b42d32a583596337666e7d08084da2cc6b" + integrity sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg== chrome-trace-event@^1.0.2: version "1.0.2" @@ -1780,11 +1778,11 @@ copy-webpack-plugin@~5.1.1: webpack-log "^2.0.0" core-js-compat@^3.6.2: - version "3.6.4" - resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.4.tgz#938476569ebb6cda80d339bcf199fae4f16fff17" - integrity sha512-zAa3IZPvsJ0slViBQ2z+vgyyTuhd3MFn1rBQjZSKVEgB0UMYhUkCj9jJUVPgGTGqWvsBVmfnruXgTcNyTlEiSA== + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.6.5.tgz#2a51d9a4e25dfd6e690251aa81f99e3c05481f1c" + integrity sha512-7ItTKOhOZbznhXAQ2g/slGg1PJV5zDO/WdkTwi7UEOJmkvsE32PWvx6mKtDjiMpjnR2CNf6BAD6sSxIlv7ptng== dependencies: - browserslist "^4.8.3" + browserslist "^4.8.5" semver "7.0.0" core-util-is@1.0.2, core-util-is@~1.0.0: @@ -1800,7 +1798,7 @@ create-ecdh@^4.0.0: bn.js "^4.1.0" elliptic "^6.0.0" -create-hash@^1.1.0, create-hash@^1.1.2: +create-hash@^1.1.0, create-hash@^1.1.2, create-hash@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/create-hash/-/create-hash-1.2.0.tgz#889078af11a63756bcfb59bd221996be3a9ef196" integrity sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg== @@ -1811,7 +1809,7 @@ create-hash@^1.1.0, create-hash@^1.1.2: ripemd160 "^2.0.1" sha.js "^2.4.0" -create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4: +create-hmac@^1.1.0, create-hmac@^1.1.4, create-hmac@^1.1.7: version "1.1.7" resolved "https://registry.yarnpkg.com/create-hmac/-/create-hmac-1.1.7.tgz#69170c78b3ab957147b2b8b04572e47ead2243ff" integrity sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg== @@ -1841,9 +1839,9 @@ cross-spawn@^5.0.1: which "^1.2.9" cross-spawn@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.2.tgz#d0d7dcfa74e89115c7619f4f721a94e1fdb716d6" - integrity sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw== + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" @@ -1867,9 +1865,9 @@ crypto-browserify@^3.11.0: randomfill "^1.0.3" css-loader@~3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.5.1.tgz#db2b2336f4169edb68e6a829ad4fd36552647b77" - integrity sha512-0G4CbcZzQ9D1Q6ndOfjFuMDo8uLYMu5vc9Abs5ztyHcKvmil6GJrMiNjzzi3tQvUF+mVRuDg7bE6Oc0Prolgig== + version "3.5.3" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-3.5.3.tgz#95ac16468e1adcd95c844729e0bb167639eb0bcf" + integrity sha512-UEr9NH5Lmi7+dguAm+/JSPovNjYbm2k3TK58EiwQHzOHH5Jfq1Y+XoP2bQO6TMn7PptMd0opxxedAWcaSTRKHw== dependencies: camelcase "^5.3.1" cssesc "^3.0.0" @@ -1882,7 +1880,7 @@ css-loader@~3.5.1: postcss-modules-scope "^2.2.0" postcss-modules-values "^3.0.0" postcss-value-parser "^4.0.3" - schema-utils "^2.6.5" + schema-utils "^2.6.6" semver "^6.3.0" cssesc@^3.0.0: @@ -2043,12 +2041,12 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -electron-to-chromium@^1.3.390: - version "1.3.401" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.401.tgz#4b84f80c68af9d23cebb8f2cc97b1479197ebffa" - integrity sha512-9tvSOS1++0EQP0tkgyD8KJergVZsld1/UqOusZVTbx9MWZHw5NCezkOjIQ5YWeB45jKdQerDfRrt28HwidI9Ow== +electron-to-chromium@^1.3.413: + version "1.3.451" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.451.tgz#0c075af3e2f06d706670bde0279432802ca8c83f" + integrity sha512-2fvco0F2bBIgqzO8GRP0Jt/91pdrf9KfZ5FsmkYkjERmIJG585cFeFZV4+CO6oTmU3HmCTgfcZuEa7kW8VUh3A== -elliptic@^6.0.0: +elliptic@^6.0.0, elliptic@^6.5.2: version "6.5.2" resolved "https://registry.yarnpkg.com/elliptic/-/elliptic-6.5.2.tgz#05c5678d7173c049d8ca433552224a495d0e3762" integrity sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw== @@ -2061,11 +2059,6 @@ elliptic@^6.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.0" -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -2115,7 +2108,7 @@ error@^7.0.0: dependencies: string-template "~0.2.1" -es-abstract@^1.17.0-next.1, es-abstract@^1.17.5: +es-abstract@^1.17.5: version "1.17.5" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.5.tgz#d8c9d1d66c8981fb9200e2251d799eee92774ae9" integrity sha512-BR9auzDbySxOcfog0tLECW8l28eRGpDpU3Dm3Hp4q/N+VtLTmyj4EUN088XZWQDW/hzj6sYRDXeOFsaAODKvpg== @@ -2172,9 +2165,9 @@ esutils@^2.0.2: integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== events@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" - integrity sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA== + version "3.1.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.1.0.tgz#84279af1b34cb75aa88bf5ff291f6d0bd9b31a59" + integrity sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg== evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: version "1.0.3" @@ -2201,9 +2194,9 @@ execa@^3.2.0: strip-final-newline "^2.0.0" execa@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.0.tgz#7f37d6ec17f09e6b8fc53288611695b6d12b9daf" - integrity sha512-JbDUxwV3BoT5ZVXQrSVbAiaXhXUkIwvbhPIwZ0N13kX+5yCzOhUNdocxB/UQRuYOHRYYwAxKYwJYc0T4D12pDA== + version "4.0.2" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.0.2.tgz#ad87fb7b2d9d564f70d2b62d511bee41d5cbb240" + integrity sha512-QI2zLa6CjGWdiQsmSkZoGtDx2N+cQIGb3yNolGTdjSQzydzLgYYf8LRuagp7S7fPimjcrzUDSUFd/MgzELMi4Q== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -2277,20 +2270,15 @@ extsprintf@^1.2.0: resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f" integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= -fast-deep-equal@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" - integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= - fast-deep-equal@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== fast-json-stable-stringify@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" - integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== faye-websocket@~0.10.0: version "0.10.0" @@ -2300,9 +2288,9 @@ faye-websocket@~0.10.0: websocket-driver ">=0.5.1" figgy-pudding@^3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.1.tgz#862470112901c727a0e495a80744bd5baa1d6790" - integrity sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w== + version "3.5.2" + resolved "https://registry.yarnpkg.com/figgy-pudding/-/figgy-pudding-3.5.2.tgz#b4eee8148abb01dcf1d1ac34367d59e12fa61d6e" + integrity sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw== file-loader@~6.0.0: version "6.0.0" @@ -2327,6 +2315,13 @@ fill-range@^4.0.0: repeat-string "^1.6.1" to-regex-range "^2.1.0" +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + find-cache-dir@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-2.1.0.tgz#8d0f94cd13fe43c6c7c261a0d86115ca918c05f7" @@ -2336,13 +2331,13 @@ find-cache-dir@^2.1.0: make-dir "^2.0.0" pkg-dir "^3.0.0" -find-cache-dir@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.2.0.tgz#e7fe44c1abc1299f516146e563108fd1006c1874" - integrity sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg== +find-cache-dir@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== dependencies: commondir "^1.0.1" - make-dir "^3.0.0" + make-dir "^3.0.2" pkg-dir "^4.1.0" find-replace@^3.0.0: @@ -2434,9 +2429,9 @@ fs-extra@^7.0.0: universalify "^0.1.0" fs-minipass@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.0.0.tgz#a6415edab02fae4b9e9230bc87ee2e4472003cd1" - integrity sha512-40Qz+LFXmd9tzYVnnBmZvFfvAADfUA14TXPK1s7IfElJTIZ97rA8w4Kin7Wt5JBrC3ShnnFJO/5vPjPEeJIq9A== + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== dependencies: minipass "^3.0.0" @@ -2456,13 +2451,18 @@ fs.realpath@^1.0.0: integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.2.7: - version "1.2.12" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.12.tgz#db7e0d8ec3b0b45724fd4d83d43554a8f1f0de5c" - integrity sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q== + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== dependencies: bindings "^1.5.0" nan "^2.12.1" +fsevents@~2.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== + fstream@^1.0.0, fstream@^1.0.12: version "1.0.12" resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" @@ -2541,6 +2541,13 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.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@^7.0.0, glob@^7.0.3, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@~7.1.1: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" @@ -2582,12 +2589,12 @@ globby@^7.1.1: slash "^1.0.0" globule@^1.0.0: - version "1.2.1" - resolved "https://registry.yarnpkg.com/globule/-/globule-1.2.1.tgz#5dffb1b191f22d20797a9369b49eab4e9839696d" - integrity sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ== + version "1.3.1" + resolved "https://registry.yarnpkg.com/globule/-/globule-1.3.1.tgz#90a25338f22b7fbeb527cee63c629aea754d33b9" + integrity sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g== dependencies: glob "~7.1.1" - lodash "~4.17.10" + lodash "~4.17.12" minimatch "~3.0.2" gopherjs-loader@^0.0.1: @@ -2596,16 +2603,16 @@ gopherjs-loader@^0.0.1: integrity sha1-yeJap2k3Md5dqg6oKalrR/fpJmg= graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.2: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== har-schema@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= -har-validator@~5.1.0: +har-validator@~5.1.3: version "5.1.3" resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== @@ -2679,12 +2686,13 @@ has@^1.0.3: function-bind "^1.1.1" hash-base@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.0.4.tgz#5fc8686847ecd73499403319a6b0a3f3f6ae4918" - integrity sha1-X8hoaEfs1zSZQDMZprCj8/auSRg= + version "3.1.0" + resolved "https://registry.yarnpkg.com/hash-base/-/hash-base-3.1.0.tgz#55c381d9e06e1d2997a883b4a3fddfe7f0d3af33" + integrity sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA== dependencies: - inherits "^2.0.1" - safe-buffer "^5.0.1" + inherits "^2.0.4" + readable-stream "^3.6.0" + safe-buffer "^5.2.0" hash.js@^1.0.0, hash.js@^1.0.3: version "1.1.7" @@ -2704,14 +2712,14 @@ hmac-drbg@^1.0.0: minimalistic-crypto-utils "^1.0.1" hosted-git-info@^2.1.4: - version "2.8.5" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.5.tgz#759cfcf2c4d156ade59b0b2dfabddc42a6b9c70c" - integrity sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg== + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== -"http-parser-js@>=0.4.0 <0.4.11": - version "0.4.10" - resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.4.10.tgz#92c9c1374c35085f75db359ec56cc257cbb93fa4" - integrity sha1-ksnBN0w1CF912zWexWzCV8u5P6Q= +http-parser-js@>=0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.2.tgz#da2e31d237b393aae72ace43882dd7e270a8ff77" + integrity sha512-opCO9ASqg5Wy2FNo7A0sxy71yGbbkJJXLdgMK04Tcypw9jr2MgWbyubb0+WdmDmGnFflO7fRbqbaihh/ENDlRQ== http-signature@~1.2.0: version "1.2.0" @@ -2768,9 +2776,9 @@ imurmurhash@^0.1.4: integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= in-publish@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.0.tgz#e20ff5e3a2afc2690320b6dc552682a9c7fadf51" - integrity sha1-4g/146KvwmkDILbcVSaCqcf631E= + version "2.0.1" + resolved "https://registry.yarnpkg.com/in-publish/-/in-publish-2.0.1.tgz#948b1a535c8030561cea522f73f78f4be357e00c" + integrity sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ== indent-string@^2.1.0: version "2.1.0" @@ -2802,7 +2810,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, 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== @@ -2860,6 +2868,13 @@ is-binary-path@^1.0.0: dependencies: binary-extensions "^1.0.0" +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + is-buffer@^1.1.5: version "1.1.6" resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" @@ -2925,11 +2940,9 @@ is-extglob@^2.1.0, is-extglob@^2.1.1: integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= - dependencies: - number-is-nan "^1.0.0" + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.1.0.tgz#904135c77fb42c0641d6aa1bcdbc4daa8da082f3" + integrity sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w== is-fullwidth-code-point@^1.0.0: version "1.0.0" @@ -2950,7 +2963,7 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1: +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== @@ -2964,6 +2977,11 @@ is-number@^3.0.0: dependencies: kind-of "^3.0.2" +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + is-path-cwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" @@ -3061,13 +3079,13 @@ isstream@~0.1.2: resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" integrity sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo= -jest-worker@^24.9.0: - version "24.9.0" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-24.9.0.tgz#5dbfdb5b2d322e98567898238a9697bcce67b3e5" - integrity sha512-51PE4haMSXcHohnSMdM42anbvZANYTqMrr52tVKPqqsPJMzoP6FYYDVqahX/HrAoKEKz3uUPzSvKs9A3qR4iVw== +jest-worker@^25.4.0: + version "25.5.0" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.5.0.tgz#2611d071b79cea0f43ee57a3d118593ac1547db1" + integrity sha512-/dsSmUkIy5EBGfv/IjjqmFxrNAUpBERfGs1oHROyD7yxjG/w+t0GOJDX8O1k32ySmd7+a5IhnJU2qQFcJ4n1vw== dependencies: merge-stream "^2.0.0" - supports-color "^6.1.0" + supports-color "^7.0.0" jquery-ujs@~1.2.2: version "1.2.2" @@ -3076,15 +3094,15 @@ jquery-ujs@~1.2.2: dependencies: jquery ">=1.8.0" -jquery@>=1.8.0, jquery@~3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.4.1.tgz#714f1f8d9dde4bdfa55764ba37ef214630d80ef2" - integrity sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw== +jquery@3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.5.1.tgz#d7b4d08e1bfdb86ad2f1a3d039ea17304717abb5" + integrity sha512-XwIBPqcMn57FxfT+Go5pzySnm4KWkT1Tv7gjrpT1srtf8Weynl6R273VJ5GjkRb51IzMp5nbaPjJXMWeju2MKg== js-base64@^2.1.8: - version "2.5.1" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.1.tgz#1efa39ef2c5f7980bb1784ade4a8af2de3291121" - integrity sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw== + version "2.5.2" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.5.2.tgz#313b6274dda718f714d00b3330bbae6e38e90209" + integrity sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ== "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" @@ -3181,16 +3199,11 @@ kind-of@^5.0.0: resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== -kind-of@^6.0.0: +kind-of@^6.0.0, kind-of@^6.0.2: version "6.0.3" resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== -kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== - lcid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" @@ -3231,16 +3244,7 @@ loader-runner@^2.4.0: resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-2.4.0.tgz#ed47066bfe534d7e84c4c7b9998c2a75607d9357" integrity sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw== -loader-utils@^1.1.0, loader-utils@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" - integrity sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA== - dependencies: - big.js "^5.2.2" - emojis-list "^2.0.0" - json5 "^1.0.1" - -loader-utils@^1.4.0: +loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613" integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA== @@ -3286,7 +3290,7 @@ lodash.camelcase@^4.3.0: resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= -"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@~4.17.10: +"lodash@>=3.5 <5", lodash@^4.0.0, lodash@^4.17.13, lodash@^4.17.14, lodash@^4.17.15, lodash@~4.17.12: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== @@ -3334,10 +3338,10 @@ make-dir@^2.0.0: pify "^4.0.1" semver "^5.6.0" -make-dir@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.0.tgz#1b5f39f6b9270ed33f9f054c5c0f84304989f801" - integrity sha512-grNJDhb8b1Jm1qeqW5R/O63wUo4UXo2v2HMic6YT9i/HBlF93S8jkMgH7yugvY9ABDShH4VZMn8I+U8+fCNegw== +make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" @@ -3431,29 +3435,17 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.42.0: - version "1.42.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" - integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== - -mime-db@1.43.0: - version "1.43.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" - integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== - -mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.25" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437" - integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg== - dependencies: - mime-db "1.42.0" +mime-db@1.44.0: + version "1.44.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.44.0.tgz#fa11c5eb0aca1334b4233cb4d52f10c5a6272f92" + integrity sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg== -mime-types@^2.1.26: - version "2.1.26" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" - integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== +mime-types@^2.1.12, mime-types@^2.1.26, mime-types@~2.1.19: + version "2.1.27" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.27.tgz#47949f98e279ea53119f5722e0f34e529bec009f" + integrity sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w== dependencies: - mime-db "1.43.0" + mime-db "1.44.0" mimic-fn@^2.1.0: version "2.1.0" @@ -3487,17 +3479,7 @@ minimatch@^3.0.4, minimatch@~3.0.2: dependencies: brace-expansion "^1.1.7" -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.1.3, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -minimist@^1.2.5: +minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== @@ -3517,16 +3499,16 @@ minipass-flush@^1.0.5: minipass "^3.0.0" minipass-pipeline@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.2.tgz#3dcb6bb4a546e32969c7ad710f2c79a86abba93a" - integrity sha512-3JS5A2DKhD2g0Gg8x3yamO0pj7YeKGwVlDS90pF++kxptwx/F+B//roxf9SqYil5tQo65bijy+dAuAFZmYOouA== + version "1.2.3" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.3.tgz#55f7839307d74859d6e8ada9c3ebe72cec216a34" + integrity sha512-cFOknTvng5vqnwOpDsZTWhNll6Jf8o2x+/diplafmxpuIymAjzoOolZG0VvQf3V2HgqzJNhnuKHYp2BqDgz8IQ== dependencies: minipass "^3.0.0" minipass@^3.0.0, minipass@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.1.tgz#7607ce778472a185ad6d89082aa2070f79cedcd5" - integrity sha512-UFqVihv6PQgwj8/yTGvl9kPz7xIAY+R5z6XYjRInD3Gk3qx6QGSD6zEcpeG4Dy/lQnv1J6zv8ejV90hyYIKf3w== + version "3.1.3" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.1.3.tgz#7d42ff1f39635482e15f9cdb53184deebd5815fd" + integrity sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg== dependencies: yallist "^4.0.0" @@ -3554,14 +3536,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - -mkdirp@^0.5.3: +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1, mkdirp@^0.5.3: version "0.5.5" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== @@ -3591,9 +3566,9 @@ ms@^2.1.1: integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== nan@^2.12.1, nan@^2.13.2: - version "2.14.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" - integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + version "2.14.1" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" + integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== nanoid@^2.0.3: version "2.1.11" @@ -3670,9 +3645,9 @@ node-libs-browser@^2.2.1: vm-browserify "^1.0.1" node-releases@^1.1.53: - version "1.1.53" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.53.tgz#2d821bfa499ed7c5dffc5e2f28c88e78a08ee3f4" - integrity sha512-wp8zyQVwef2hpZ/dJH7SfSrIPD6YoJz6BDQDpGEkcA0s3LpAQoxBIYmfIq6QAhC1DhwsyCgTaTTcONwX8qzCuQ== + version "1.1.56" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.56.tgz#bc054a417d316e3adac90eafb7e1932802f28705" + integrity sha512-EVo605FhWLygH8a64TjgpjyHYOihkxECwX1bHHr8tETJKWEiWS2YJjPbvsX2jFjnjTNEgBCmk9mLjKG1Mf11cw== node-sass@~4.13.1: version "4.13.1" @@ -3721,7 +3696,7 @@ normalize-path@^2.1.1: dependencies: remove-trailing-separator "^1.0.1" -normalize-path@^3.0.0: +normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== @@ -3815,13 +3790,12 @@ object.assign@^4.1.0: object-keys "^1.0.11" object.entries@^1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.1.tgz#ee1cf04153de02bb093fec33683900f57ce5399b" - integrity sha512-ilqR7BgdyZetJutmDPfXCDffGa0/Yzl2ivVNpbx/g4UeWrCdRnFDUBrKJGLhGieRHDATnyZXWBeCb29k9CJysQ== + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.2.tgz#bc73f00acb6b6bb16c203434b10f9a7e797d3add" + integrity sha512-BQdB9qKmb/HyNdMNWVr7O3+z5MUIx3aiegEIJqjMBbBf0YT9RRxTJSim4mzFqtyr7PDAHigq0N9dO0m0tRakQA== dependencies: define-properties "^1.1.3" - es-abstract "^1.17.0-next.1" - function-bind "^1.1.1" + es-abstract "^1.17.5" has "^1.0.3" object.pick@^1.3.0: @@ -3887,10 +3861,10 @@ p-limit@^1.1.0: dependencies: p-try "^1.0.0" -p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1: - version "2.2.1" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" - integrity sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg== +p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.2.1, p-limit@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== dependencies: p-try "^2.0.0" @@ -3951,7 +3925,7 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" -parse-asn1@^5.0.0: +parse-asn1@^5.0.0, parse-asn1@^5.1.5: version "5.1.5" resolved "https://registry.yarnpkg.com/parse-asn1/-/parse-asn1-5.1.5.tgz#003271343da58dc94cace494faef3d2147ecea0e" integrity sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ== @@ -4054,7 +4028,7 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -picomatch@^2.0.4: +picomatch@^2.0.4, picomatch@^2.2.1: version "2.2.2" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== @@ -4113,9 +4087,9 @@ popper.js@^1.16.1: integrity sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ== portfinder@^1.0.17: - version "1.0.25" - resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.25.tgz#254fd337ffba869f4b9d37edc298059cb4d35eca" - integrity sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg== + version "1.0.26" + resolved "https://registry.yarnpkg.com/portfinder/-/portfinder-1.0.26.tgz#475658d56ca30bed72ac7f1378ed350bd1b64e70" + integrity sha512-Xi7mKxJHHMI3rIUrnm/jjUgwhbYMkp/XKEcZX3aG4BrumLpq3nmoQMX+ClYnDZnZ/New7IatC1no5RX0zo1vXQ== dependencies: async "^2.6.2" debug "^3.1.1" @@ -4169,14 +4143,14 @@ postcss-selector-parser@^6.0.0, postcss-selector-parser@^6.0.2: uniq "^1.0.1" postcss-value-parser@^4.0.0, postcss-value-parser@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz#651ff4593aa9eda8d5d0d66593a2417aeaeb325d" - integrity sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg== + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz#443f6a20ced6481a2bda4fa8532a6e55d789a2cb" + integrity sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ== postcss@^7.0.14, postcss@^7.0.16, postcss@^7.0.27, postcss@^7.0.5, postcss@^7.0.6: - version "7.0.27" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.27.tgz#cc67cdc6b0daa375105b7c424a85567345fc54d9" - integrity sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ== + version "7.0.30" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.30.tgz#cc9378beffe46a02cbc4506a0477d05fcea9a8e2" + integrity sha512-nu/0m+NtIzoubO+xdAlwZl/u5S5vi/y6BCsoL8D+8IxsD3XvBS8X4YEADNIVXKVuQvduiucnRv+vPIqj56EGMQ== dependencies: chalk "^2.4.2" source-map "^0.6.1" @@ -4217,10 +4191,10 @@ pseudomap@^1.0.2: resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= -psl@^1.1.24: - version "1.4.0" - resolved "https://registry.yarnpkg.com/psl/-/psl-1.4.0.tgz#5dd26156cdb69fa1fdb8ab1991667d3f80ced7c2" - integrity sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw== +psl@^1.1.28: + version "1.8.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" + integrity sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ== public-encrypt@^4.0.0: version "4.0.3" @@ -4264,20 +4238,20 @@ punycode@1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.3.2.tgz#9653a036fb7c1ee42342f2325cceefea3926c48d" integrity sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0= -punycode@^1.2.4, punycode@^1.4.1: +punycode@^1.2.4: version "1.4.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha1-wNWmOycYgArY4esPpSachN1BhF4= -punycode@^2.1.0: +punycode@^2.1.0, punycode@^2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== qs@^6.4.0: - version "6.9.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.1.tgz#20082c65cb78223635ab1a9eaca8875a29bf8ec9" - integrity sha512-Cxm7/SS/y/Z3MHWSxXb8lIFqgqBowP5JMlTUFyJN88y0SGQhVmZnqFK/PeuMX9LzUyWsqqhNxIyg0jlzq946yA== + version "6.9.4" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.4.tgz#9090b290d1f91728d3c22e54843ca44aea5ab687" + integrity sha512-A1kFqHekCTM7cz0udomYUoYNWjBebHm/5wzU/XqrBRBNWectVH0QIiN+NEcZ0Dte5hvzHwbr8+XQmguPhJ6WdQ== qs@~6.5.2: version "6.5.2" @@ -4342,20 +4316,7 @@ read-pkg@^1.0.0: normalize-package-data "^2.3.2" path-type "^1.0.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.6, readable-stream@~2.3.6: - version "2.3.6" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" - integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^2.0.2, readable-stream@^2.3.3: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -4368,6 +4329,15 @@ readable-stream@^2.0.2, readable-stream@^2.3.3: string_decoder "~1.1.1" util-deprecate "~1.0.1" +readable-stream@^3.6.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" + readdirp@^2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" @@ -4377,6 +4347,13 @@ readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== + dependencies: + picomatch "^2.2.1" + rechoir@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.7.0.tgz#32650fd52c21ab252aa5d65b19310441c7e03aca" @@ -4443,9 +4420,9 @@ regexpu-core@^4.7.0: unicode-match-property-value-ecmascript "^1.2.0" regjsgen@^0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.1.tgz#48f0bf1a5ea205196929c0d9798b42d1ed98443c" - integrity sha512-5qxzGZjDs9w4tzT3TPhCJqWdCc3RLYwy9J2NB0nm5Lz+S273lvWcpjaTGHsT1dc6Hhfq41uSEOw8wBmxrKOuyg== + version "0.5.2" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.5.2.tgz#92ff295fb1deecbf6ecdab2543d207e91aa33733" + integrity sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A== regjsparser@^0.6.4: version "0.6.4" @@ -4477,9 +4454,9 @@ repeating@^2.0.0: is-finite "^1.0.0" request@^2.87.0, request@^2.88.0: - version "2.88.0" - resolved "https://registry.yarnpkg.com/request/-/request-2.88.0.tgz#9c2fca4f7d35b592efe57c7f0a55e81052124fef" - integrity sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg== + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== dependencies: aws-sign2 "~0.7.0" aws4 "^1.8.0" @@ -4488,7 +4465,7 @@ request@^2.87.0, request@^2.88.0: extend "~3.0.2" forever-agent "~0.6.1" form-data "~2.3.2" - har-validator "~5.1.0" + har-validator "~5.1.3" http-signature "~1.2.0" is-typedarray "~1.0.0" isstream "~0.1.2" @@ -4498,7 +4475,7 @@ request@^2.87.0, request@^2.88.0: performance-now "^2.1.0" qs "~6.5.2" safe-buffer "^5.1.2" - tough-cookie "~2.4.3" + tough-cookie "~2.5.0" tunnel-agent "^0.6.0" uuid "^3.3.2" @@ -4529,17 +4506,10 @@ 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.10.0, resolve@^1.2.0, resolve@^1.3.2: - version "1.12.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" - integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== - dependencies: - path-parse "^1.0.6" - -resolve@^1.9.0: - version "1.15.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" - integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== +resolve@^1.10.0, resolve@^1.2.0, resolve@^1.3.2, resolve@^1.9.0: + version "1.17.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" + integrity sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w== dependencies: path-parse "^1.0.6" @@ -4570,10 +4540,10 @@ run-queue@^1.0.0, run-queue@^1.0.3: dependencies: aproba "^1.1.1" -safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@~5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== +safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.1, safe-buffer@^5.1.2, safe-buffer@^5.2.0, 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== safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" @@ -4598,9 +4568,9 @@ safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== sass-graph@^2.2.4: - version "2.2.4" - resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.4.tgz#13fbd63cd1caf0908b9fd93476ad43a51d1e0b49" - integrity sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k= + version "2.2.6" + resolved "https://registry.yarnpkg.com/sass-graph/-/sass-graph-2.2.6.tgz#09fda0e4287480e3e4967b72a2d133ba09b8d827" + integrity sha512-MKuEYXFSGuRSi8FZ3A7imN1CeVn9Gpw0/SFJKdL1ejXJneI9a5rwlEZrKejhEFAA3O6yr3eIyl/WuvASvlT36g== dependencies: glob "^7.0.0" lodash "^4.0.0" @@ -4627,18 +4597,10 @@ schema-utils@^1.0.0: ajv-errors "^1.0.0" ajv-keywords "^3.1.0" -schema-utils@^2.6.1: - version "2.6.1" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.1.tgz#eb78f0b945c7bcfa2082b3565e8db3548011dc4f" - integrity sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg== - dependencies: - ajv "^6.10.2" - ajv-keywords "^3.4.1" - -schema-utils@^2.6.4, schema-utils@^2.6.5: - version "2.6.5" - resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.5.tgz#c758f0a7e624263073d396e29cd40aa101152d8a" - integrity sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ== +schema-utils@^2.6.1, schema-utils@^2.6.5, schema-utils@^2.6.6: + version "2.6.6" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.6.6.tgz#299fe6bd4a3365dc23d99fd446caff8f1d6c330c" + integrity sha512-wHutF/WPSbIi9x6ctjGGk2Hvl0VOz5l3EKEuKbjPlB30mKZUzb9A5k9yEXRX3pwyqVLPvpfZZEllaFq/M718hA== dependencies: ajv "^6.12.0" ajv-keywords "^3.4.1" @@ -4676,6 +4638,11 @@ serialize-javascript@^2.1.2: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== +serialize-javascript@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-3.0.0.tgz#492e489a2d77b7b804ad391a5f5d97870952548e" + integrity sha512-skZcHYw2vEX4bw90nAr2iTTsz6x2SrHEnfxgKYmZlvJYBEZrvbKtobJWlQ20zczKb3bsHHXXTYt48zBA7ni9cw== + set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -4735,12 +4702,7 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== -signal-exit@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= - -signal-exit@^3.0.2: +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== @@ -4804,9 +4766,9 @@ source-map-resolve@^0.5.0: urix "^0.1.0" source-map-support@~0.5.12: - version "0.5.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== + 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== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -4834,22 +4796,22 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== dependencies: spdx-expression-parse "^3.0.0" spdx-license-ids "^3.0.0" spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== dependencies: spdx-exceptions "^2.1.0" spdx-license-ids "^3.0.0" @@ -4939,9 +4901,9 @@ stream-http@^2.7.2: xtend "^4.0.0" stream-shift@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.0.tgz#d5c752825e5367e786f78e18e445ea223a155952" - integrity sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI= + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== strict-uri-encode@^1.0.0: version "1.1.0" @@ -4971,9 +4933,9 @@ string-width@^1.0.1, string-width@^1.0.2: strip-ansi "^4.0.0" string.prototype.trimend@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.0.tgz#ee497fd29768646d84be2c9b819e292439614373" - integrity sha512-EEJnGqa/xNfIg05SxiPSqRS7S9qwDhYts1TSLR1BQfYUfPe1stofgGKvwERK9+9yf+PpfBMlpBaCHucXGPQfUA== + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz#85812a6b847ac002270f5808146064c995fb6913" + integrity sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g== dependencies: define-properties "^1.1.3" es-abstract "^1.17.5" @@ -4997,9 +4959,9 @@ string.prototype.trimright@^2.1.1: string.prototype.trimend "^1.0.0" string.prototype.trimstart@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.0.tgz#afe596a7ce9de905496919406c9734845f01a2f2" - integrity sha512-iCP8g01NFYiiBOnwG1Xc3WZLyoo+RuBymwIlWncShXDDJYWN6DbnM3odslBJdgCdRlq94B5s63NWAZlcn2CS4w== + version "1.0.1" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz#14af6d9f34b053f7cfc89b72f8f2ee14b9039a54" + integrity sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw== dependencies: define-properties "^1.1.3" es-abstract "^1.17.5" @@ -5009,7 +4971,7 @@ string_decoder@0.10: resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= -string_decoder@^1.0.0: +string_decoder@^1.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== @@ -5057,12 +5019,12 @@ strip-indent@^1.0.1: get-stdin "^4.0.1" style-loader@~1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.1.3.tgz#9e826e69c683c4d9bf9db924f85e9abb30d5e200" - integrity sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw== + version "1.1.4" + resolved "https://registry.yarnpkg.com/style-loader/-/style-loader-1.1.4.tgz#1ad81283cefe51096756fd62697258edad933230" + integrity sha512-SbBHRD8fwK3pX+4UDF4ETxUF0+rCvk29LWTTI7Rt0cgsDjAj3SWM76ByTe6u2+4IlJ/WwluB7wuslWETCoPQdg== dependencies: - loader-utils "^1.2.3" - schema-utils "^2.6.4" + loader-utils "^2.0.0" + schema-utils "^2.6.5" supports-color@^2.0.0: version "2.0.0" @@ -5083,7 +5045,7 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.0: +supports-color@^7.0.0, supports-color@^7.1.0: version "7.1.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== @@ -5130,32 +5092,24 @@ terser-webpack-plugin@^1.4.3: worker-farm "^1.7.0" terser-webpack-plugin@~2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.1.tgz#6a63c27debc15b25ffd2588562ee2eeabdcab923" - integrity sha512-dNxivOXmDgZqrGxOttBH6B4xaxT4zNC+Xd+2K8jwGDMK5q2CZI+KZMA1AAnSRT+BTRvuzKsDx+fpxzPAmAMVcA== + version "2.3.6" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-2.3.6.tgz#a4014b311a61f87c6a1b217ef4f5a75bd0665a69" + integrity sha512-I8IDsQwZrqjdmOicNeE8L/MhwatAap3mUrtcAKJuilsemUNcX+Hier/eAzwStVqhlCxq0aG3ni9bK/0BESXkTg== dependencies: cacache "^13.0.1" - find-cache-dir "^3.2.0" - jest-worker "^24.9.0" - schema-utils "^2.6.1" - serialize-javascript "^2.1.2" + find-cache-dir "^3.3.1" + jest-worker "^25.4.0" + p-limit "^2.3.0" + schema-utils "^2.6.6" + serialize-javascript "^3.0.0" source-map "^0.6.1" - terser "^4.4.3" + terser "^4.6.12" webpack-sources "^1.4.3" -terser@^4.1.2: - version "4.6.11" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.6.11.tgz#12ff99fdd62a26de2a82f508515407eb6ccd8a9f" - integrity sha512-76Ynm7OXUG5xhOpblhytE7X58oeNSmC8xnNhjWVo8CksHit0U0kO4hfNbPrrYwowLWFgM2n9L176VNx2QaHmtA== - dependencies: - commander "^2.20.0" - source-map "~0.6.1" - source-map-support "~0.5.12" - -terser@^4.4.3: - version "4.4.3" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.4.3.tgz#401abc52b88869cf904412503b1eb7da093ae2f0" - integrity sha512-0ikKraVtRDKGzHrzkCv5rUNDzqlhmhowOBqC0XqUHFpW+vJ45+20/IFBcebwKfiS2Z9fJin6Eo+F1zLZsxi8RA== +terser@^4.1.2, terser@^4.6.12: + version "4.7.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.7.0.tgz#15852cf1a08e3256a80428e865a2fa893ffba006" + integrity sha512-Lfb0RiZcjRDXCC3OSHJpEkxJ9Qeqs6mp2v4jf2MHfy8vGERmVDuvjXdd/EnP5Deme5F2yBRBymKmKHCBg2echw== dependencies: commander "^2.20.0" source-map "~0.6.1" @@ -5213,6 +5167,13 @@ to-regex-range@^2.1.0: is-number "^3.0.0" repeat-string "^1.6.1" +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + to-regex@^3.0.1, to-regex@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" @@ -5223,13 +5184,13 @@ to-regex@^3.0.1, to-regex@^3.0.2: regex-not "^1.0.2" safe-regex "^1.1.0" -tough-cookie@~2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.4.3.tgz#53f36da3f47783b0925afa06ff9f3b165280f781" - integrity sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ== +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== dependencies: - psl "^1.1.24" - punycode "^1.4.1" + psl "^1.1.28" + punycode "^2.1.1" trim-newlines@^1.0.0: version "1.0.0" @@ -5244,9 +5205,9 @@ trim-newlines@^1.0.0: glob "^7.1.2" tslib@^1.9.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" - integrity sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ== + version "1.13.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" + integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== tty-browserify@0.0.0: version "0.0.0" @@ -5304,9 +5265,9 @@ unicode-match-property-value-ecmascript@^1.2.0: integrity sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ== unicode-property-aliases-ecmascript@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz#a9cc6cc7ce63a0a3023fc99e341b94431d405a57" - integrity sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw== + version "1.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz#dd57a99f6207bedff4628abefb94c50db941c8f4" + integrity sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg== union-value@^1.0.0: version "1.0.1" @@ -5389,7 +5350,7 @@ use@^3.1.0: 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= @@ -5409,9 +5370,9 @@ util@^0.11.0: inherits "2.0.3" uuid@^3.3.2: - version "3.3.3" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" - integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== v8-compile-cache@^2.1.0: version "2.1.0" @@ -5440,14 +5401,23 @@ vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== -watchpack@^1.6.0: - version "1.6.1" - resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.6.1.tgz#280da0a8718592174010c078c7585a74cd8cd0e2" - integrity sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA== +watchpack-chokidar2@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/watchpack-chokidar2/-/watchpack-chokidar2-2.0.0.tgz#9948a1866cbbd6cb824dea13a7ed691f6c8ddff0" + integrity sha512-9TyfOyN/zLUbA288wZ8IsMZ+6cbzvsNyEzSBp6e/zkifi6xxbl8SmQ/CxQq32k8NNqrdVEVUVSEf56L4rQ/ZxA== dependencies: chokidar "^2.1.8" + +watchpack@^1.6.0: + version "1.7.2" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-1.7.2.tgz#c02e4d4d49913c3e7e122c3325365af9d331e9aa" + integrity sha512-ymVbbQP40MFTp+cNMvpyBpBtygHnPzPkHqoIwRRj/0B8KhqQwV8LaKjtbaxF2lK4vl8zN9wCxS46IFCU5K4W0g== + dependencies: graceful-fs "^4.1.2" neo-async "^2.5.0" + optionalDependencies: + chokidar "^3.4.0" + watchpack-chokidar2 "^2.0.0" webpack-clean-obsolete-chunks@^0.4.0: version "0.4.0" @@ -5558,11 +5528,11 @@ webpack@~4.42.1: webpack-sources "^1.4.1" websocket-driver@>=0.5.1: - version "0.7.3" - resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.3.tgz#a2d4e0d4f4f116f1e6297eba58b05d430100e9f9" - integrity sha512-bpxWlvbbB459Mlipc5GBzzZwhoZgGEZLuqPaR0INBGnPAY1vdBX6hPnoFXiw+3yWxDuHyQjO2oXTMyS8A5haFg== + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== dependencies: - http-parser-js ">=0.4.0 <0.4.11" + http-parser-js ">=0.5.1" safe-buffer ">=5.1.0" websocket-extensions ">=0.1.1" @@ -5655,17 +5625,18 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yargs-parser@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" - integrity sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo= +yargs-parser@5.0.0-security.0: + version "5.0.0-security.0" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0-security.0.tgz#4ff7271d25f90ac15643b86076a2ab499ec9ee24" + integrity sha512-T69y4Ps64LNesYxeYGYPvfoMTt/7y1XtfpIslUeK4um+9Hu7hlGoRtaDLvdXb7+/tfq4opVa2HRY5xGip022rQ== dependencies: camelcase "^3.0.0" + object.assign "^4.1.0" yargs@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.0.tgz#6ba318eb16961727f5d284f8ea003e8d6154d0c8" - integrity sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg= + version "7.1.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.1.tgz#67f0ef52e228d4ee0d6311acede8850f53464df6" + integrity sha512-huO4Fr1f9PmiJJdll5kwoS2e4GqzGSsMT3PPMpOwoVkOK8ckqAewMTZyA6LXVQWflleb/Z8oPBEvNsMft0XE+g== dependencies: camelcase "^3.0.0" cliui "^3.2.0" @@ -5679,4 +5650,4 @@ yargs@^7.0.0: string-width "^1.0.2" which-module "^1.0.0" y18n "^3.2.1" - yargs-parser "^5.0.0" + yargs-parser "5.0.0-security.0" diff --git a/mail/internal/mail/send.go b/mail/internal/mail/send.go index 5881b7074..c3bca2deb 100644 --- a/mail/internal/mail/send.go +++ b/mail/internal/mail/send.go @@ -32,14 +32,15 @@ func (f SendFunc) Send(from string, to []string, msg io.WriterTo) error { } // Send sends emails using the given Sender. -func Send(s Sender, msg ...*Message) error { +func Send(s Sender, msg ...*Message) []error { + errors := make([]error, len(msg)) for i, m := range msg { if err := send(s, m); err != nil { - return &SendError{Cause: err, Index: uint(i)} + errors[i] = &SendError{Cause: err, Index: uint(i)} } } - return nil + return errors } func send(s Sender, m *Message) error { diff --git a/mail/internal/mail/smtp.go b/mail/internal/mail/smtp.go index 6716e9118..5556f7ffd 100644 --- a/mail/internal/mail/smtp.go +++ b/mail/internal/mail/smtp.go @@ -199,7 +199,13 @@ func (d *Dialer) DialAndSend(m ...*Message) error { } defer s.Close() - return Send(s, m...) + for _, err := range Send(s, m...) { + if err != nil { + return err + } + } + + return nil } type smtpSender struct { diff --git a/mail/sender.go b/mail/sender.go index c01c62fad..7c8908558 100644 --- a/mail/sender.go +++ b/mail/sender.go @@ -4,3 +4,9 @@ package mail type Sender interface { Send(Message) error } + +// BatchSender interface for sending batch or single mail +type BatchSender interface { + Sender + SendBatch(messages ...Message) (errorsByMessages []error, generalError error) +} diff --git a/mail/smtp_sender.go b/mail/smtp_sender.go index 8e472d14a..5ed7ebcb5 100644 --- a/mail/smtp_sender.go +++ b/mail/smtp_sender.go @@ -15,6 +15,25 @@ type SMTPSender struct { //Send a message using SMTP configuration or returns an error if something goes wrong. func (sm SMTPSender) Send(message Message) error { + return sm.Dialer.DialAndSend(sm.prepareMessage(message)) +} + +// SendBatch of message with one connection, returns general error or errors specific for each message +func (sm SMTPSender) SendBatch(messages ...Message) (errorsByMessages []error, generalError error) { + preparedMessages := make([]*gomail.Message, len(messages)) + for i, message := range messages { + preparedMessages[i] = sm.prepareMessage(message) + } + + s, err := sm.Dialer.Dial() + if err != nil { + return nil, err + } + defer s.Close() + + return gomail.Send(s, preparedMessages...), nil +} +func (sm SMTPSender) prepareMessage(message Message) *gomail.Message { gm := gomail.NewMessage() gm.SetHeader("From", message.From) @@ -30,13 +49,7 @@ func (sm SMTPSender) Send(message Message) error { gm.SetHeader(field, value) } - err := sm.Dialer.DialAndSend(gm) - - if err != nil { - return err - } - - return nil + return gm } func (sm SMTPSender) addBodies(message Message, gm *gomail.Message) { diff --git a/packrd/packed-packr.go b/packrd/packed-packr.go index 5ec23ee19..e1388b57c 100644 --- a/packrd/packed-packr.go +++ b/packrd/packed-packr.go @@ -16,7 +16,7 @@ var _ = func() error { hgr, err := resolver.NewHexGzip(map[string]string{ "02e9568ee200d1f95e13ba2235a3085a": "1f8b08000000000000ff9454c16edb3814bceb2b064c60ec2e4009392c1008e9c1a95df790c6aea5b4e849a0a46799082d2a24e53670f5ef8524cb8993a6494f4f18be9911f9864c69a50d253633b272a1b7db71c815e80ebeae9cf52797f17d456095b6ae3064199ac6033844e578410e75950b47188d0e882cad134a81df6360dd299e2949a5ebf44959faadc9e6dedea9bf73e82847e2653e08a812dc22486ba9728ba0d081355970fa0f656b0db6dbf5e6e3aaf21722bb15052d6e8ba661f889ac76e03958c0c05767ff766a597e907889daf56d6e7369c02b5475aa6416086bc9d96ea9d0687f9fd728a45bd7a99fe94d50e8b45ead84d2c1933a50363a47aebf974a8bbcc3e847a58dc3621c7f7cc74edb129ecee66d0d525932cfb34e1464c3aed991759ee7b7856f85b12146876f0fd80a2345aafa6e60364fa6d75f42b0b687bd350dc0621ec5b3e5344a2697e1f1d15e8b0df91fa4a2a6491e44df1401e0d3b7e8f3553219c7e3cb71347d55f981b29ccfe364318ea2aff3e52404335a0fce433e80781ac507f1e46679d51bb45a93f4c6a8a6619e77829956a22cb02563a52e91adb5cc086b521519cfaf2df1a2ebe072230a0a317a0429d19d3fb05febe1700fbfc63ee3e7cfa867feb9e7b5ec76602778bf166541701aece222c47fcfbc59bb565b825b137a08333decc6039ed27ad30e7d1c942e5321f6dbb164b6326b53f352448e07c9fb8b1afeffe7e93fcb153f3c21c3991dcd7078b5fad6fdbde9fff157000000ffff99f35612d8040000", "04485932d90f92b1f6d01ac655f3b3d2": "1f8b08000000000000ffa4935b4cd3671887ff26de6d59d8922d9b2eb33aa6558aadd406e3d45a40c64108300373ba1a8452a0500e838156401ca70844c7383928c7164a2dd0ca414e15778893a51048c620dbc230195bb22cc8b8a63c0b2064f77b9237bf2f5fbee77baf7e82b04bd82578786ca44848dc2d086f0882201604c143100491b075bfc96e4178eda5add98617acadb937f3f9f3659a4d7da87515f845e57136328f8bdadb7cf9958da53ffedc79bbbebebeade2766f9dedfde3f886e4f2e6891cde3e654074c680e8d475f61ccfe6755926126526f75a1cb0beb6e96fccb65b5963c1439c88e7f9124ec616732cbe0ec9d53abce38d48a38bf009c9c033a89457c449a4196a5ffcb1b5bfbbcfc9ab122d074f5fc753994de0d57c62efd850dfed475d35486c652767626f7128bc0cb1d2c0cbe238caab4c9beef2df7fa1d21bf1d2b4228b337230b21275452fe9ed8f894a2f223aa7820cf3d7846519d92bcfe4685809b24bb5482e55323bf70b2d3d4ec4da0e14993dc8756df8e5b4139e5e8ad7c9300e78fb73c05b85541941f8a795f86aeea248ef24a0681c454e3f85f71cc4df6cc24b67c3476f45a16be1d4875af61c3cc33b9200ce4705e11f1acc5b87fcd92f0d40f5710e87833fc7d3ff069ee70af8405d4a68463d47d3ecc8d36c48350dec93a808bb10c4a0ed0263c3597cebd4d1d61081af4ac561df18fc937bf152d72055d713a83111906e449a6a439e66c53bae91d331494c4d14b3f49b93d68e62ec0faa595eeaa3c79ec989c81b84660fe095d080546f2144dfcdfb294dc852adc8f55d48932d4414753038d2c4946b9edfe7ef303f6361c6354daba39ae8422731d726507e3688a2e009970d03f8c455732cb50b9f940e8e6adbf0cbed22bfc5ccf0680521091a92f232187df405ba9a2e0c75e32494b8f8e4d614970b2729ab1b22bfda8a58d3caf1e4667c7466e4574a286fba4f424115fb4e46f3eed98b14d69ac82a6f446d3061ec71d1f77896fc2a3b13ae196e37f6225237234bb17248634671a58ce8f85444de4a8e28cef19e4cc511df603e4acce2669505ebc8240ee7534cf7fb8175565756d116d713985c4a446e2389e5163a1f0c11a54e65efe1b3ec97faa1bf5648f7c8180ee7389d030fa96e32b3b2f2cf4e7fa6e77e64e1d90293ae27d807da714d7fc7af8b0b34771ae91f3633fbf337fc30fd90c1d12e0686fa585d5dddf4fedba1ed362e3e5be4d1b883a1e1562626cc3cfddec4d8580b63ce1ee6e67ec2ed76efb81b08ff937f030000ffff6ddbe2317e040000", - "06a6a4ca9e718a10ee1efef1c2e49b52": "1f8b08000000000000ff8c57df6fdb36107ef75f71130258ca6409d8a30aaf0f59500c68936eebd607db4868e964d39649954729716dffef03454a967f645d1e2c9bbcefbbe3dde93b269582347cc579c9d2358c41e1b78a2bf4bd17bbe405ef06d6e64321e77d834521e7c7dd3b596e1dcbe7a25a70d1374d65b91d39c251d96c1f919fb8e07744f7af5ab1545f82375cf0514a34426b7149c004cf91ae405b971b677101bd2b9089c739c90235de2d2bb1a66bf8d4988da4b31ba58de191e50b2a4275e95e37eb6f1efc23aff14f2c24cbde8ebce035aac6a60777f8548a9c2f2ac5b4543086dd000085561c2981bc12a9e652f8815906a8996a379da9f9636559f09419c304266e116018c54266f8b491595520c5ab6f15aaeda85a514c2a8d15e305452b1a867d0423424d714a14f768234ae96838b35f0e83e6611a2aa2ad487daf83dfc6b7d1ad1744b954f72c5dfabe097a1bc0f8d72e689e835d85f178fc23cf41070350a82b25dc4f170340811ad6b88571939f6da4b02c588a7eec4fa3a9e39ec63ea974bfa27d4ab45fc8601a07fb69e46b326b3461e9ccaec78b1086c3a08bd45fe33622cd94a6af5c2f7defc90b60bf073fbec4dec43c883492eece3c869c15843f3e03cffdb6ba93356e67062aaaa2e8234ff761d23899fd80b80f8aca8a962e365b46fbb0c8d6740070080ddcb62bf96d0ca603dd9a71ef1c087c69c527faac64cd33b42f83bfbb49c0b39de785ab3fccf3b87008c21ec13505f177392f50b00d26e04dcc73164d5229340abd64b49c4529d119cf8586f9935daee42681ae41bd50cb043cef300b616764ed6fb19119cf396609685561c817422a4c60e29986bcbdf542f056ed17f3fadcde7a333875dc66e0a36419aac7d2f42fb5e730fab7e1dfd1f16738af1689ed8cb3349ce8a04dc0834d402b80d18aa4383ff5a506fab6b2b377837e855df5ba0a5b7970d1f625c755dcc1da1654464bfa3273ec4d00d3f709c4d3c8bd103771d8dbad08fb40f377ade651d1e42f3c31dc815d4dc01464647f7821c836ee1dc94aa5f8899536c387c39b04c4fe27438fe0f88af57877c7036b7a7d7f1387f68c9eeef1e36b5a54192670aac6d7695696a60b75cee658745c6f50bd1192ff22f37c6f3e7ed96b9defa95e04fef47d3d9e663f4fa3f62330fe6cd495ea5c5d6744a9ff93c0b46acb702d2837172385248b1afd56070287c7d75252cbf0deaac54fa78b376f84b690c7ec2f64b944b5ea6ad0d671e6c656dbf9f38a17d95d337e2f476d1cc3c3e397fb047ecf612b2b600a61c96a2e16c0892a2478e17a097ac90984d43047b345a8c12b952c51155b2f840d5b634b47954243a5e0c3e3d3fdc33fc0a9b16fcd81113ccfab3c6785b4b13d83ac51299e21c1c3e36ff706d5b235de5f964c638de78c5a8254e065586321cb0d0aed450dcede3850d430366e53248a50d4514b6e86da09cc4987517d7b4fe95d3b36d2b4228a3aec8d996d7272a189dc3cf13bad92952e2b9dc03561b78abe222f8492e96502cf37bba7a78c2bb37f88cb6a5ef0d449f873d7074ed0ce1c77832b3c865b15786675227e475bd7a0497ff0be6a14649562328c340d431836d7a7e621c570d68d5d380e5f3bd3ebe692739259085a6e1b501bb09dcf46d1cf2f96fe8e95258aecaf54f1527f610b275341d045dd28b5e5eb0761cb6eefb1306ec645ffb2ebb791588b6e141c0f9fca4da990cc5aeff5db30b1284e9204b0462c9f72532fb2e15dd3cdae077ac0546e4c5ec8cdc4f012d77d71ff41dc5d431c82eec826a946dc37fc7b7395ecb7ae1bc62a81893df4ac9faff3441e0687c1c0b64a64e4486973f93969a49e96f8c1e0df000000ffffb1c5bb578f0d0000", + "06a6a4ca9e718a10ee1efef1c2e49b52": "1f8b08000000000000ffa4574f6fe3b613bdfb53cc4f0860293f59027ad4c2dd431a2c0aec26db76db3dd846424b239bb64c6a399412afedef5e50a464f94fba059a836593f31e8733a33793540ad2f015e7254bd7300685df2aaed0f75eec9217bc1b589b0f859cf70d16859c1f77ef64b9752c9f8b6ac145df3495e576e4084765b37d447ee282df11ddbf6ac5527d09de70c14729d108adc52501133c47ba026d8fdc388b0be85d814c3cce4916a8f16e5989355dc3a7c66c249ddd286d0c8f2c5f5011aacbe375b3fee6c53ff21a7fc742b2ec6dcf0b5ea36a6c7a70874fa5c8f9a2524c4b0563d80d005068c59112c82b916a2e851f9865809aa976d3999a3f5696054f99314c60e2160186512c64864f1b99550552bcfa56a1da8eaa15c5a4d258315e50b4a261d8473022d414a744718f36a2948e8633fbe530681ea6a022da8ad4f73af86d7c1bdd7a41944b75cfd2a5ef1ba7b7018c7fee9ce639d855188fc73f3a39e860000a75a584fbe97c002850c31ab7306ee2b38d1496054bd18ffd693475dcd3d82795ee57b44f89f60b194ce3603f8d7c4d668d262c9dd9f57811c27018749efa6bdc46a499d2f495eba5ef3d7901ecf7e0c797d89b98079146d2dd9dc790b382f0c777e0b9df6677b2c6edcc404555147de4e93e4c9a43663f20ee83a2b2a2a5f3cda6d13e2cb2351d001c4203b7e54a7eeb83a940b7668e7707087c69c527faac64cd33b42f83bfbb49c0b395e785abdfccf3b87008c21ec13505f177392f50b00d26e04dcc73164d5229340abd64b49c4529d119cf8586f9935daee42681ae40bd50cb043cef300b616764ed4fb19119cf396609685561c817422a4c60e29982bcbdf542f056ed17f3fadcde7a33383db88dc047c932548fa5a95f6aef61f46fc3bfa3e3cf705e2d125b19676138d1411b80071b805600a31549717eeb4b0df46d6667ef06fd0cbbec7519b6f2e0bced4b8ecbb883b525a88c96f465e6589b00a6ee1388a7917b216ee2b0b75b11f681e6ef5acea3a2895f7862b803bb9a8049c8c8fef04290addf3b92954af1132b6d840f8737094a49fa3f9310fb970c3d82e37bdae3dd1da3a6e9f5fd4d1cda4079bac78faf69516598c0a9a45fa759599aced5399b63d171bd41f5864bfe8bccf3bdf9f869af75bea77a11f8d3f7f5789afd7f1ab51f8139cf7a5da9eea8eb8c28f53f12987a6f19ae39e59a6ba4906451a3df8a49e0f0f85a4a6a19de5bc9f9dfe9e2cd1bae2de431fa0b592e51adba1cb4799cb9ded7be3ef38a17d95dd3c32ffb751cc3c3e397fb047ecd612b2b600a61c96a2e16c0892a2478e17a097ac90984d43047b345a8c12b952c51155b2f840d5b634b47954243a5e0c3e3d3fdc35fc0a9b16fcd81113ccfab3c6785b4be3d83ac51299e21c1c3e32ff706d5b235a7bf2c99c61acf19b504a9c0cbb0c642961b14da8b1a9c1d5b50d43036c7a64814a1a8a396dc74c61398d31fd33aecb0d39b5d36d294228a3aecf5aa6d72321545ae29f99de0c94a97954ee05a77b06d61455e0825d3cb049e6f764f4f195766ff1097d5bce0a9eb03cf5d1d38553c3bb8eb7ee1d1ddaac033ab13053ddaba024dfaddfb55a320ab149361a46918c2b099c19a8714c359d7bbe1d8c1ed60503793d249642168b9ad43adc3b6c99bb6703e9dfa3b569628b23f52c54bfd852d9c4c0541e77523f796afef844dbb1d8661dcf49cfec4ecb79e588bae9f1c2f9fca4da990cc5aeff5db30b1284e8204b0462c9f72932fb2ee5dd3cdae067ac0546e4c5cc835d6f012d77d71ff86dc5d431c82eeca26a846dc37fc7b338ff64bd7757495c0c45e7ad68fd779200f83c360604b253272a4b499a04e0aa9a7257e30f83b0000fffff3292c28d40d0000", "09debad446adbbaa70992811a3b479d2": "1f8b08000000000000ff72c8cc2dc82f2a5150aa4bcacf2f292e294a2cd02f4e2e2ed68773f5405c256b2e844a87b4fca292c4f2d4e2fcdc54fdb4fc3c185b37ad2835551fa4393127472f37334f0fa213a135a9342d2d31275fc99a0b100000ffff04baf43578000000", "0ac9c97b14565a81e81adc4ef482ff28": "1f8b08000000000000ff7c94c1ab1b3710c6cfd55f31cf2ea4599c7d4e7b28bc4b49531a7269030998107a186bc796b0ac11d2c8db25e47f2fa3f53a79f491e38ad137bfef9bd1ae6147c1f29940187eaf870306be33e683c37882892b1c388375ccc5c7e352d00e27ae1946dac340170a9cce140522d1507a633e7f067f809e9394fe554afdce8b7bc7095e7cf962d66bf80305f75808de93d464cc5b81c07c2a10fc895a5bebb834a6420235cddd30a5e02d8ae708b501210c57a93bf813a360116f1b3fc1c1e722204eeb5452d9547160f005385154617104ab45a49fce6105071f08300e408317f0a297aad23802cb399315fdce11cf543690b09491f35036e0b848d90089edfb1ec4a1006652eecc297b14fa1a1dc58bcf1c35b6de988f5c61f4210086c237d4339e084acd346b75ddc4b5eba00866b9f7b10886d0b01603c08759dd3af696fadbc4ba6ee4f84cba0e966b6ab009a9c32b556fcc7abd86d79914f5a30a2da32ac6fc7dda4061ad7b76a1168e527e27bf264fc34cb4d46c20f278e3b218c1ceedbef551c0c7d97313bbe23d18f3c38fb0bf5e4d9c96ab2f50578ee2d0164c37ecbdb6d6c9abeaabaf7b63ccd2b9389f0a8c5e1c20583e9f95b8b56c731851acfbffda691156e1338ab718c20499f6d5873988370c7b1f314f735d9c004b2129b77ce143dbbfd626d738a7b7181ae8b25a481e5b1de862ccdb365a48eca3cc60fbcc63a1ac9bf2c989a487fbfb973fffda6ffb6dfff2e197ed76fbcf4f4f1e3f6f42c5710d03142240583df11b5841c223f5c674dd6b8ec78c52434ba1dc759d6e479ba4c30bcd384bb28f9e696a51e41aa38fc7b65fb053f77fd1bff29b313b824cea5987a7548e70d0b9f1e5b1b1235fc3e83ddf6c7d7bf87c6e44174f63fb3584a0af41133eea96c0c0b6ea6b9bc1c451566f6f980708d59eee8cf9f48e47ca34c07e5acc3cddcafc170000ffff90de672137050000", "1766fb2f5a37b14997d2efd7a94119b8": "1f8b08000000000000ff7c52cd8a1b3d10bcfb29fa1318fc416686dc72900cf9bb267b302c3985b6a667d56b8d24a4f62c8ef1bb87b16cafc3929c24d155d5adaad6ff7df9fe79f3e3e12b3819fd7aa1eb01a01d613f5f00f44882107024a326a69714b328b031080531ea857b71a6a7892d35e7c73be0c0c2e89b62d19379afee85acc35c488cdacbd07cb89684c5d3fad37e18d04768e07884362629edc794da6f3852bb9911fc8be074d25d852f008ec706788010e50effc8e21e699bd0eee074aa0d96068a1c3c1547241b7c5aa96d6dd6da52d4ffb0bcaa51e8ff41c2943c5b148ee19ef8a74bb6e4a1499871bcf309f7e228085b96c34f893b0a0ababf702fe51b771ee42d1f96eb5709cf610799bc516c6350e0320d176229240f286ea578c4272add80d30c6ad9c6f307ce21e8ee1ab9dec6feb05e54dd9e27b01e4b316a1e073950be84560d4a98e7ac576af0585c3b2fd0ab2b157260f2fdcda8aee7e9aabe34f08c13169b39bd35f8f9e6afeeea4cbaab0bfa3b0000ffff85cad3beb8020000", @@ -62,7 +62,7 @@ var _ = func() error { "a0904bad0a4150c57d6f1e6c5d6aa503": "1f8b08000000000000ff010000ffff0000000000000000", "a4be76308cb5f0ce6524479f82e9df1a": "1f8b08000000000000ff5c514d6edc3a0cdeeb14df5b3901fcdc7d16b9442f60ce88b2d89144839262f8f6853c13b4e8ca04cdef5751fe834c19bf7a6d886c8ca6e052fb982235acb71e0225c5ad4bf22b225510d6e54796cda88996ba42025a64d0be27b95fcbeb6ed77d71ae97a0d67aa1c6e99cffa835cebb1ad939a32aa822f77b1c5fc1a13d7924fdbaec64e68653fb0c2a1ecd0638f30c8131a574becedf64fa624426f3d8543d5a94b2d5f77118e94975636c2a655bf0f1e69c84413b19a3324bd9901952c6cefece328f700555335f94886a26b711e67bc2613a7ed0be73610fdf6d1cfe53de0cb5c10ea3026938a4c5abb8f57fbf22241abede9d33dec87ce25a67d478851ba8bb6606dd4d6b1d4e139d43836edadb8cc09c108cf92ac973e2c6c8bc40da54a18fe512d43235c46e6dc1c129cd6399658b0dcf2ed02bbf1c85a7a3d19ebf608fa2c7e29c4c2921f1287400be335446a0acbd62276bc3d8a1e6eb87739f9ff8a9485ab6d703462a8f8aa0064ae9520b52a3fb1d0000ffffd31e584a8b020000", "a9b609ba9b7a306c42499485e3c01bab": "1f8b08000000000000ffacce410a02310c40d17d4f11ba3707f00e82201ea034510aa529498a8c43efeec6c185ab8139c0ffbc13143a435c5794ee861721ae782bed396ad2f266bc3762b52cca7362564ece84367266b318005c53b39abc48fbfb5c553aeb9cf04a06dfe6316a5d601bc5b00f303a1d03d8467b01c4e62acb1184df2a864f000000ffff4c95c89e87010000", - "aaa62e7739ae79a7991ad085bfba82da": "1f8b08000000000000ff6c53bb92e32a10cdfd1594e2a1ad9767e63a9ae0261b6cb6b1ab106ad97810b080fca8adf1b76f21610bed3853f539751e4debcf8a904cb11eb32dc99aa1eb98d4d94b189ed03aa155981790433e4d7b26c691502d5ee0e8a6a9141c951b357efef835cd1cb7c278976d49f020246bf11408676c0ce39f84d233f3fc309249f016b25de086506aacde5b742e5b11f235ca5a34da09afed3590f7c21f8606b8eed77b1de3af17355a34a85a545c6092a5d1da3b6f99092235d450dc73186d0cdad06c4bb25d01c5eb8c7d74da7a7646a77b5c775addbf6967712cbfdb4051c65511921d7f0f38e5bc55a9c734a7c364722ba084726ed8e2e9ffa7a13f1ad6a05c732946af377887fa112d62da6204ff9b7344d05874e829aad383b2c95e5671238142a5662dda117e876256e0ce25d8ad82cddc062f463b4ce11cde46e511ee845c80af8f632224db6b73407b4cc57739e4b3b8634be777c8a17c80febad42ea080ea8e0e36ed73abd33e4ab74883f61daa46cb089a9e0ae53c9392c66ba4460efbe9f26bc8e7721ead43fb84752ba19a5bf442091a7688176f19f7097197a72f7517e21299a2ba715aa247ca0f83fa74915e27cfa2cdf599f9068aa44f24c4aa7539e79aeda693aa42e86f61a438a1c5b0ca7f0b7ea3f64c890e9d5f12c32f11ce7bf5b5fa1b0000ffff192ac71b70040000", + "aaa62e7739ae79a7991ad085bfba82da": "1f8b08000000000000ff6c53b98edb3014ecfd1584eae5b32eef556d912645bad40628e9c9a697e26348ca0782f5b70794684bcaba1366067388e4df156389161d26ef2ca9fab6158a92a7001ed13a493ae019a4908e6827e40049dde0190e6e4495ac51bbc1e3d7cfdf23e66a2b8d77c93b0b198c250d1e83e0849511f527e3fc247cbd1fc42c644bd52c78c338379676169d4b568c7d0db6160d39e9c95e827827fdbeafa0a66ebda3587fbd98d1a041dda0ae25ceba5444de792b4c30296113e731961832066d58f6ce926d06d9336437eea325ebc5091d75b86e49dfbe796b7118bfdd40964f5e873f3d8e3d0bd84c3623ccfb31e39a410ef934b0c1e38f879d3f2a51a15ad74a0e512ff00ae5bd59e4c86224dfa61a9134161d7a8efa78976c92a7d5a811bd2763b19567b403fd062ff07c3f9c60c0158926b2af904dfeb57333eebad88a67430ee7740a2f43ee40b7522dc8e7fb4d632cd991d9a33dcccdb729a493b921e797e1db626ee0c4b2d92ba490df497f596667904171637b3bdf7b2de77b3535c883f78d2a864a91341d97da79a1148f57991bd5efc66753423a8df7681dda07aa6b0ec5b4b2935af23013cfde8adacf84db747ece37a35aa1d09c2a470a3df27adfeb4f17e5e5ecd8c85c1e856f209bed898238b5cca75e539c8cbfbe80ec5b19258f6831fccaff077e937642cb169d5f0ac37b0a8f63f5b5fa170000ffff7d5869daad040000", "adbdf21aecb8483652c3ca79c70c21e0": "1f8b08000000000000ff7455516fe3360c7eb67f05e1a72448edf7003da0b8eb5d07646971ceba01c3d02a161d0b278b9a24c71714f9ef03653b97146b5e224be4c78fe427ca8aea87d823882a28323e4d556bc90598a549b657a1e97679456db1a75d57d7425331fe671f9da3391cb334a9c955e8bd86ffb76afb9bc9224b132b9c6835edf7e83eb6bf307a17bc338eb4465978ac3a87593a4fd3a280fbcd33280f9d470981a0416dc1f72a540d780c4199bd879de05332d037e8104283ec29acd5aa125c1146d8a1327b709dc9e10bd6a2d38177338907d4645b3421cbd3837031e22d7005f26f1866d9b7c797fbcd73b6bcb69d475b612d2cc6f4f23b6b23e53b6b197a2023b406475d400fc2486895941a7be1106a7230bab2976fa8d3127608126b6550e6b06d9467a4d020187407840a4d400754c3913af72ecb3c2d0adefa4e1dd76579116c097b479df54bc050e5790e4c4062a5854309dbc727b8f9045f1effdc30c610b745613ca818098494202ec907825761ed2b2c441dd02d46302eb16088186e09a111615843afb486cde3161a71c0e1c0607f81c9f92278d1c6ee71daae434ed5a1a7ce5513e198ab07e1a147ada7a47f0b20b4a79176849fcaee10aa06ab1f284199584c72121daf8e578588c9bf965ce9af4aa37f6516023edf6d3f3fdcdcadd703e2123c810a53c384eec591e5c5ce568b0a2568e1c3142bfa5c515f327715868aa0f19d1bad3c439cbb120b7bb6337840c7eaa804df923cad3b53b1d466f32b05c25b9aa83a0af3f6168cd2bc91c4cf496df906fbd9b47eb491131b25f7e6b082e977bf795ea6c3b244ef15998d687105d9cbdb5b4e36788e96f35ecec53a9d5efc60962dd32439cdd33449f83274815a1114d33e8243a91c5681f55396eb8159fe87c7591c2465b99ecd27cf35edc1e1bf1dfa00716c6040e761562b1d17acfce33cbfc0b8182ef9d3e4b18edf1194edbedd6f6759912de1815a7c10466a3e4c4e699a380c9d338c9b9ee2459e380d1d988eafae01eb6c3c1d33130694a9a88dd366a01ff55c732b950743011eb6dba73287ac09c1ae8a027f8ad66ae43198c1eda761dfbf3bb8b899bfe24b420f8b85a1b058001ab1d3c875cde370e11171351f604b20299266b01ec161456d8b4642e7e3dd05ebe8e771051383f3f0ce15bf0a85a4ca17d1662c10b4e41094a9c9b531ca85ef87c3bd18d4fbabe76769fe7eceed2b5bbc9dbb323d341716b301ec52c265b9fe3e366235a998ef41661dc92ebe8e519e65b97ee2241e5048747e05adb07ffbc0f3eb9fe1ef2dfbebe62bb95e3889f2e6c951a06c3576263b2d5356f829fd2f0000fffff938fe4679070000", "b944ada0d7dfee32b86a3c351586ba93": "1f8b08000000000000ff010000ffff0000000000000000", "bf27d2dc0c63524e934bff393b6a81bf": "1f8b08000000000000ffb4525fabd330147fcfa738373048e09282e0cbb4f7c93b15748203c12749dbb4c6a5392149ebc6e87797a415953995827de99ffcceefdfa993f551760a2421ba77e8233002400d7634dd43f4da76213f773a7e1e2a51635f74580d6d2b0d16ad5175bc7decd015e3d33f9ccbfae88bf149423cdf94a05b60e862108f76d41e6daf6c84bb1268a34665d0a577cae1029b879b9cca8ee7990fa684e384b483ad415b1d1987cb2a29dd82f21eb625247af17608f1a022a32fdf7d7adc7fa0f74013e715dfe681f26779f2ae04ab4d564f97c14eec64948629ef3901987e724c001a8fee858cb292417dec0de3e96385a7e4209726f6ea2ba34be6addca674c98628289ffd567812af646054dbbc258d36882f012de58b8d70ff3d54c2eeb46d0e79dfbf1bc9034b0b7fcb32a701c8d4cb2f94fcbe57b2519e851993984ac83ae20dcae6f50f4de657e84d645a367d555e1e5dd95eb31089736ffea1b95fe1ffab35872e77b6f3d8af2eeb5b000000ffffd35ecdf2fc030000", @@ -74,6 +74,7 @@ var _ = func() error { "d4f2890402006146d78d0aa8f8c5ba2a": "1f8b08000000000000ffb493516bdb301485dffd2b2e228516229bad7b328e47378751d8466065efb2a5d822d79291e48e4ce8bf0f3971da2cd9defae487cb3df73b47c70597cfd020b37645863dfd007d4ddf93320128bafb79c0a9542895a035ea66474aef533d389b7ed35c60ba317a102604a88463126d9175f76512155e696f5133478d6c3b37a90314372b40a9764ffa76d6fbce7a91fe64e633b36283a36118c286b9eef66e097e12ca81d44e41ed14956aab49b8030f370741804facd981d3c010e19cf18bd1e310c2f1308479e71584e0d29d81ccbe26020fe7336658ff588590ff75e848ff43aa164508e96305e11afd2f6694542d5942adf93e07b2e6d2453b9760d7d299f5df848d33d50a43964038738cf6c2759a931c48b5feba7e5a9f068d565b69fa38793002f67a043b1af1f1c55425ac337a7ff255645c3e97c9f193244931e2dc1094d6d136bed3d4412065e23d98c8028b01f2151cbc3c38672c8430350ce5e53a954ef430d4f4dddc3464b538ddb17dac077fe9322c863938db3094bf05845064d3d25160f8d79f109fc9fbc5ff52f6fe423fc4fe15d9708804659944ab42f168abc8462c933f010000ffffef62da7b98030000", "d77707b5575db5b50791e6c1a131ac93": "1f8b08000000000000ff4c8e3f4bc4401047fbfd143fb74a4036bda5368782075e612116739bc92698fdc3ecac08c77d770997e2aac70cc37b53c8ff506090d725a76acc124b164567009b588759b558b34d61d1b99d9dcf7108f9dca689d63cecb4a637661870c8910f94c695054b0561e489daaa98f7a56654965f462bdb3d61ce915128b033534bfeded079ec7af79293f29ff660912cb81840589b2478f7c16964e9b647dd49495b3dbe3d42dcebe9f8de452a5f556549e1fb868b8d5c2b05b64fb09fbcfaadaf19cfb7d283bdf6bdb99aff000000ffff5167c69218010000", "d8ea92bfa1667613feca7b7c00f413a6": "1f8b08000000000000ff8c8d414a04410c45d7d629c2308b6e90f45e702588a0a2a81788d569a7a12a35a4532086dc5d70445dbafb3c1effb98392bc31ec29dbda042e2e014f738388344de0be47a1caf8485ba6b27e7084fbb7ff17c2cc0bf562b0d663e1ca62f4a5a4a54bfeffcd90e1b52f0b9586574d8cdf6d04566d0a9ece94adab40c62796997538981df1d9c8faf6707b0e8a372ff777c3ee2776bd168e987e43278007ab65378e29923bcb1c913e030000ffff1fc509720a010000", + "dea300b9bc0b1a9623ad19f4494e92ca": "1f8b08000000000000ffcacd4f29cd49d54bad28c82f2a2956b055a8e65250505028c8294dcfcc2bb65288067315148a520b4b338b5235d4134b4bf20b8a52d3322b528bd435c1b2b15c0a0ab55c80000000ffffa429f83f4a000000", "e0c0cd0d96c606a11abafce45587b849": "1f8b08000000000000ff1cccc14a03311080e173e729869c1229e95df0608bb8a0e2610b1e65c8ced66036b366260711dfbd74af3f1fff4ae99b2e8c942c4b5580bcacd20c5d653b7c99ad0e60ee35a127c5bbc74d8d3d1b073cb3dae7200b0f54a7c2cd07fc835d63c5fb07248dc3f9edd5bb830bf199cd07801d697cfae954fc6d1c4723ebfafeb2c7c61a4f3271d8c849aa51aeea6ff928d36f1cade57af1618fee834b9285d1048f7d9ea9880bf00fd7000000ffffecd480c3c7000000", "e1ce4dd81dc280423d4863fc1a330606": "1f8b08000000000000ff4c8e414ac6301085d7ce2986ac5a90e4106e0a2a827a81f9d369136c326132911fc4bb4ba10b578ff7787c7c8de217ed8c142d4bed00b93451c309105d650bc9ac3938db9e2d8d9b8f52c22eb7b16d7448b8d2c10c10022e5278a1ba1eac983b12aebcd1380cd3359a6067fd661cedfc1326298c8d76f6b08d1aff13a68817de3f4935bedb8cac2a8a3ff0a06c432b46ffce75659d4e4fff6164a3bf3d3fa2fae5f3f56572b9ae7cf7c9cae1e6197ee12f0000ffff1754f1f8f0000000", "e4f19bb976ea59b0682a286b89396afb": "1f8b08000000000000ffaae65250502a284a2d4e2d2956b252885672484a4c4acdd18708e9a6e69529c572d57201020000ffff2214070e27000000", @@ -196,6 +197,7 @@ var _ = func() error { b.SetResolver("assets/images/logo.svg", packr.Pointer{ForwardBox: gk, ForwardPath: "35b86742dab99741a63518db24bb76a5"}) b.SetResolver("assets/js/application.js.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "e8696ae819b72019fcd50611211ddc80"}) b.SetResolver("package.json.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "aaa62e7739ae79a7991ad085bfba82da"}) + b.SetResolver("postcss.config.js.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "dea300b9bc0b1a9623ad19f4494e92ca"}) b.SetResolver("public/assets/-dot-keep.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "709335c479cc2996cc506ec82da2424b"}) b.SetResolver("webpack.config.js.tmpl", packr.Pointer{ForwardBox: gk, ForwardPath: "06a6a4ca9e718a10ee1efef1c2e49b52"}) }() diff --git a/render/markdown_test.go b/render/markdown_test.go index 225d2bd64..e0afe9020 100644 --- a/render/markdown_test.go +++ b/render/markdown_test.go @@ -8,8 +8,6 @@ import ( "github.com/stretchr/testify/require" ) -const mdLayout = "layout.md" -const mdAltLayout = "alt_layout.plush.md.html" const mdTemplate = "my-template.md" func Test_MD_WithoutLayout(t *testing.T) { diff --git a/runtime/version.go b/runtime/version.go index 039d8841c..c7fbe95c8 100644 --- a/runtime/version.go +++ b/runtime/version.go @@ -1,4 +1,4 @@ package runtime // Version is the current version of the buffalo binary -var Version = "v0.16.8" +var Version = "v0.16.9"