From f382d406d11a10d6d822f2b615c499ae11dfb8fe Mon Sep 17 00:00:00 2001 From: Raul de Melo Date: Fri, 9 Feb 2024 09:32:06 +0100 Subject: [PATCH 01/49] initial file --- go.mod | 3 +++ main.go | 7 +++++++ 2 files changed, 10 insertions(+) create mode 100644 go.mod create mode 100644 main.go diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..dc9eebe --- /dev/null +++ b/go.mod @@ -0,0 +1,3 @@ +module node-versions-cli + +go 1.21.7 diff --git a/main.go b/main.go new file mode 100644 index 0000000..a3dd973 --- /dev/null +++ b/main.go @@ -0,0 +1,7 @@ +package main + +import "fmt" + +func main() { + fmt.Println("Hello, World!") +} From bdd110aa2f38be78cea4ba3c9eac761eaf41c8c5 Mon Sep 17 00:00:00 2001 From: Raul de Melo Date: Fri, 9 Feb 2024 09:43:56 +0100 Subject: [PATCH 02/49] start the main program --- api/api.go | 24 ++++++++++++++++++++++++ data/node_version.go | 17 +++++++++++++++++ main.go | 9 +++++++-- 3 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 api/api.go create mode 100644 data/node_version.go diff --git a/api/api.go b/api/api.go new file mode 100644 index 0000000..71442e7 --- /dev/null +++ b/api/api.go @@ -0,0 +1,24 @@ +package api + +import ( + "fmt" + "net/http" + "node-versions-cli/data" +) + +const nodeVersionURL = "https://nodejs.org/dist/index.json" + +func GetNodeVersions() (*[]data.NodeVersion, error) { + body, err := http.Get(nodeVersionURL) + + if err != nil { + return nil, err + } + + var nodeVersions []data.NodeVersion + + fmt.Printf("Body: %v\n", body) + // err = body.Decode(&nodeVersions) + + return &nodeVersions, nil +} diff --git a/data/node_version.go b/data/node_version.go new file mode 100644 index 0000000..b2ba6bb --- /dev/null +++ b/data/node_version.go @@ -0,0 +1,17 @@ +package data + +type NodeVersion struct { + Version string `json:"version"` + Date string `json:"date"` + Files []string `json:"files"` + Npm string `json:"npm,omitempty"` + V8 string `json:"v8"` + Uv string `json:"uv,omitempty"` + Zlib string `json:"zlib,omitempty"` + Openssl string `json:"openssl,omitempty"` + Modules string `json:"modules,omitempty"` + Lts bool `json:"lts"` + Security bool `json:"security"` +} + +type NodeVersions = []NodeVersion diff --git a/main.go b/main.go index a3dd973..cfd461f 100644 --- a/main.go +++ b/main.go @@ -1,7 +1,12 @@ package main -import "fmt" +import ( + "fmt" + "node-versions-cli/api" +) func main() { - fmt.Println("Hello, World!") + nodeVersions, _ := api.GetNodeVersions() + + fmt.Println("Hello, World!", nodeVersions) } From 03c8e532c9e10b11afb9a7872b981859145cab51 Mon Sep 17 00:00:00 2001 From: Raul de Melo Date: Fri, 9 Feb 2024 09:57:53 +0100 Subject: [PATCH 03/49] implement the basic API --- api/api.go | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/api/api.go b/api/api.go index 71442e7..0d603d5 100644 --- a/api/api.go +++ b/api/api.go @@ -1,7 +1,9 @@ package api import ( - "fmt" + "encoding/json" + "errors" + "io" "net/http" "node-versions-cli/data" ) @@ -9,16 +11,26 @@ import ( const nodeVersionURL = "https://nodejs.org/dist/index.json" func GetNodeVersions() (*[]data.NodeVersion, error) { - body, err := http.Get(nodeVersionURL) + response, err := http.Get(nodeVersionURL) if err != nil { return nil, err } - var nodeVersions []data.NodeVersion + if response.StatusCode == http.StatusOK { + var nodeVersions []data.NodeVersion - fmt.Printf("Body: %v\n", body) - // err = body.Decode(&nodeVersions) + bodyBi, error := io.ReadAll(response.Body) + + if error != nil { + return nil, error + } + + json.Unmarshal(bodyBi, &nodeVersions) + + return &nodeVersions, nil + } else { + return nil, errors.New("error fetching node versions") + } - return &nodeVersions, nil } From eb19bb82df59d68c0e09f6826a602cac3f4624b0 Mon Sep 17 00:00:00 2001 From: Raul de Melo Date: Fri, 9 Feb 2024 10:00:08 +0100 Subject: [PATCH 04/49] remove schema ts --- src/schema.ts | 84 --------------------------------------------------- 1 file changed, 84 deletions(-) delete mode 100644 src/schema.ts diff --git a/src/schema.ts b/src/schema.ts deleted file mode 100644 index a586c0f..0000000 --- a/src/schema.ts +++ /dev/null @@ -1,84 +0,0 @@ -import { z } from "zod"; - -const NodeVersion = z.union([ - z.object({ - version: z.string(), - date: z.string(), - files: z.array(z.string()), - npm: z.string(), - v8: z.string(), - uv: z.string(), - zlib: z.string(), - openssl: z.string(), - modules: z.string(), - lts: z.boolean(), - security: z.boolean(), - }), - z.object({ - version: z.string(), - date: z.string(), - files: z.array(z.string()), - npm: z.string(), - v8: z.string(), - uv: z.string(), - zlib: z.string(), - openssl: z.string(), - modules: z.string(), - lts: z.string(), - security: z.boolean(), - }), - z.object({ - version: z.string(), - date: z.string(), - files: z.array(z.string()), - v8: z.string(), - uv: z.string(), - zlib: z.string(), - openssl: z.string(), - modules: z.string(), - lts: z.boolean(), - security: z.boolean(), - }), - z.object({ - version: z.string(), - date: z.string(), - files: z.array(z.string()), - v8: z.string(), - uv: z.string(), - openssl: z.string(), - modules: z.string(), - lts: z.boolean(), - security: z.boolean(), - }), - z.object({ - version: z.string(), - date: z.string(), - files: z.array(z.string()), - v8: z.string(), - uv: z.string(), - modules: z.string(), - lts: z.boolean(), - security: z.boolean(), - }), - z.object({ - version: z.string(), - date: z.string(), - files: z.array(z.string()), - v8: z.string(), - modules: z.string(), - lts: z.boolean(), - security: z.boolean(), - }), - z.object({ - version: z.string(), - date: z.string(), - files: z.array(z.string()), - v8: z.string(), - lts: z.boolean(), - security: z.boolean(), - }), -]); -export type NodeVersion = z.infer; - -export const NodeVersions = z.array(NodeVersion); -export type NodeVersions = z.infer; From 252ec109136ffa5f2da595548423fd533ce6b49d Mon Sep 17 00:00:00 2001 From: Raul de Melo Date: Sat, 10 Feb 2024 07:12:25 +0100 Subject: [PATCH 05/49] start writing the commands --- go.mod | 23 +++++++++++++++++++++++ go.sum | 44 ++++++++++++++++++++++++++++++++++++++++++++ main.go | 51 ++++++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 115 insertions(+), 3 deletions(-) create mode 100644 go.sum diff --git a/go.mod b/go.mod index dc9eebe..901f64c 100644 --- a/go.mod +++ b/go.mod @@ -1,3 +1,26 @@ module node-versions-cli go 1.21.7 + +require ( + github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect + github.com/charmbracelet/bubbletea v0.25.0 // indirect + github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect + github.com/lucasb-eyer/go-colorful v1.2.0 // indirect + github.com/mattn/go-isatty v0.0.18 // indirect + github.com/mattn/go-localereader v0.0.1 // indirect + github.com/mattn/go-runewidth v0.0.14 // indirect + github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b // indirect + github.com/muesli/cancelreader v0.2.2 // indirect + github.com/muesli/reflow v0.3.0 // indirect + github.com/muesli/termenv v0.15.2 // indirect + github.com/rivo/uniseg v0.2.0 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/urfave/cli/v2 v2.27.1 // indirect + github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect + golang.org/x/sync v0.1.0 // indirect + golang.org/x/sys v0.7.0 // indirect + golang.org/x/term v0.6.0 // indirect + golang.org/x/text v0.3.8 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..63c98d0 --- /dev/null +++ b/go.sum @@ -0,0 +1,44 @@ +github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= +github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= +github.com/charmbracelet/bubbletea v0.25.0 h1:bAfwk7jRz7FKFl9RzlIULPkStffg5k6pNt5dywy4TcM= +github.com/charmbracelet/bubbletea v0.25.0/go.mod h1:EN3QDR1T5ZdWmdfDzYcqOCAps45+QIJbLOBxmVNWNNg= +github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY= +github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= +github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= +github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= +github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= +github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= +github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= +github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= +github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= +github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b h1:1XF24mVaiu7u+CFywTdcDo2ie1pzzhwjt6RHqzpMU34= +github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b/go.mod h1:fQuZ0gauxyBcmsdE3ZT4NasjaRdxmbCS0jRHsrWu3Ho= +github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= +github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= +github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= +github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= +github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= +github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= +github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= +github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/urfave/cli/v2 v2.27.1 h1:8xSQ6szndafKVRmfyeUMxkNUJQMjL1F2zmsZ+qHpfho= +github.com/urfave/cli/v2 v2.27.1/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= +github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= +golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= +golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= +golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= +golang.org/x/text v0.3.8 h1:nAL+RVCQ9uMn3vJZbV+MRnydTJFPf8qqY42YiA6MrqY= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= diff --git a/main.go b/main.go index cfd461f..f352376 100644 --- a/main.go +++ b/main.go @@ -2,11 +2,56 @@ package main import ( "fmt" - "node-versions-cli/api" + "log" + "os" + + "github.com/urfave/cli/v2" ) func main() { - nodeVersions, _ := api.GetNodeVersions() + app := (&cli.App{ + Name: "node-versions", + Description: "A simple CLI to check node versions", + Commands: []*cli.Command{}, + // Flags: []cli.Flag{ + // &cli.BoolFlag{ + // Name: "all", + // Usage: "show all node versions", + // }, + // &cli.BoolFlag{ + // Name: "all-lts", + // Usage: "show all LTS versions", + // }, + // &cli.BoolFlag{ + // Name: "lts", + // Usage: "show current LTS version", + // }, + // &cli.BoolFlag{ + // Name: "latest", + // Usage: "show latest version", + // }, + // &cli.StringFlag{ + // Name: "latest-of", + // Usage: "show latest version of a specific version", + // }, + // }, + Action: func(cCtx *cli.Context) error { + name := "Nefertiti" + if cCtx.NArg() > 0 { + name = cCtx.Args().Get(0) + } + + if cCtx.Bool("lts") { + fmt.Println("Hola", name) + } else { + cCtx.App.Command("help").Run(cCtx) + } + + return nil + }, + }) - fmt.Println("Hello, World!", nodeVersions) + if err := app.Run(os.Args); err != nil { + log.Fatal(err) + } } From 73f22c64d53664717f3399fa5b5e254c7428a69d Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 07:22:01 +0100 Subject: [PATCH 06/49] update go mod --- go.mod | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 901f64c..c6284d7 100644 --- a/go.mod +++ b/go.mod @@ -2,6 +2,8 @@ module node-versions-cli go 1.21.7 +require github.com/urfave/cli/v2 v2.27.1 + require ( github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/charmbracelet/bubbletea v0.25.0 // indirect @@ -17,7 +19,6 @@ require ( github.com/muesli/termenv v0.15.2 // indirect github.com/rivo/uniseg v0.2.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/urfave/cli/v2 v2.27.1 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect golang.org/x/sync v0.1.0 // indirect golang.org/x/sys v0.7.0 // indirect From d9cbf1e1176173d26a0406667732eb19dfd69597 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 07:33:40 +0100 Subject: [PATCH 07/49] remove biome.json --- biome.json | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 biome.json diff --git a/biome.json b/biome.json deleted file mode 100644 index f8702e4..0000000 --- a/biome.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json", - "organizeImports": { - "enabled": true - }, - "linter": { - "enabled": true, - "rules": { - "recommended": true - } - } -} From 6b1e724a893654ee5ed57d5263bc0720af620662 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 07:33:48 +0100 Subject: [PATCH 08/49] add commands and flags --- main.go | 70 +++++++++++++++++++++++++++++++-------------------------- 1 file changed, 38 insertions(+), 32 deletions(-) diff --git a/main.go b/main.go index f352376..20c7109 100644 --- a/main.go +++ b/main.go @@ -12,40 +12,46 @@ func main() { app := (&cli.App{ Name: "node-versions", Description: "A simple CLI to check node versions", - Commands: []*cli.Command{}, - // Flags: []cli.Flag{ - // &cli.BoolFlag{ - // Name: "all", - // Usage: "show all node versions", - // }, - // &cli.BoolFlag{ - // Name: "all-lts", - // Usage: "show all LTS versions", - // }, - // &cli.BoolFlag{ - // Name: "lts", - // Usage: "show current LTS version", - // }, - // &cli.BoolFlag{ - // Name: "latest", - // Usage: "show latest version", - // }, - // &cli.StringFlag{ - // Name: "latest-of", - // Usage: "show latest version of a specific version", - // }, - // }, + Commands: []*cli.Command{{ + Name: "all", + Usage: "show all versions", + Action: func(cCtx *cli.Context) error { + fmt.Println("added task: ", cCtx.Args().First()) + return nil + }, + }, + { + Name: "lts", + Usage: "show LTS version", + Action: func(cCtx *cli.Context) error { + fmt.Println("added task: ", cCtx.Args().First()) + return nil + }, + Flags: []cli.Flag{ + &cli.BoolFlag{ + Name: "all", + Usage: "show all LTS versions", + }, + }, + }, + { + Name: "latest", + Usage: "show latest version", + Action: func(cCtx *cli.Context) error { + fmt.Println("added task: ", cCtx.Args().First()) + return nil + }, + Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "of", + Usage: "show latest version of a specific version", + }, + }, + }, + }, Action: func(cCtx *cli.Context) error { - name := "Nefertiti" - if cCtx.NArg() > 0 { - name = cCtx.Args().Get(0) - } - if cCtx.Bool("lts") { - fmt.Println("Hola", name) - } else { - cCtx.App.Command("help").Run(cCtx) - } + cCtx.App.Command("help").Run(cCtx) return nil }, From 1e26b6c0a2d5a4f998f1954019e6532fa919b866 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 08:09:34 +0100 Subject: [PATCH 09/49] Add node-versions CLI functionality and API integration --- main.go | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/main.go b/main.go index 20c7109..eaa7187 100644 --- a/main.go +++ b/main.go @@ -3,20 +3,40 @@ package main import ( "fmt" "log" + "node-versions-cli/api" + "node-versions-cli/data" "os" "github.com/urfave/cli/v2" ) func main() { + var nodeVersions *data.NodeVersions + app := (&cli.App{ - Name: "node-versions", - Description: "A simple CLI to check node versions", + Name: "node-versions", + Version: "2.0.0", + Description: "A simple CLI to check node versions", + EnableBashCompletion: true, + Before: func(ctx *cli.Context) error { + // We don't want to call the API if there's no subcommand + if ctx.Args().Len() > 0 { + versions, err := api.GetNodeVersions() + + if err != nil { + return err + } + nodeVersions = versions + } + + return nil + }, Commands: []*cli.Command{{ Name: "all", Usage: "show all versions", Action: func(cCtx *cli.Context) error { - fmt.Println("added task: ", cCtx.Args().First()) + + fmt.Println("hehee ", nodeVersions) return nil }, }, @@ -24,7 +44,6 @@ func main() { Name: "lts", Usage: "show LTS version", Action: func(cCtx *cli.Context) error { - fmt.Println("added task: ", cCtx.Args().First()) return nil }, Flags: []cli.Flag{ @@ -49,12 +68,6 @@ func main() { }, }, }, - Action: func(cCtx *cli.Context) error { - - cCtx.App.Command("help").Run(cCtx) - - return nil - }, }) if err := app.Run(os.Args); err != nil { From 38ce4199788e2d0a9cd795a0f6a457adb6c91f47 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 08:19:49 +0100 Subject: [PATCH 10/49] implement GetAll and simplify NodeVersions --- data/node_version.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/data/node_version.go b/data/node_version.go index b2ba6bb..5623664 100644 --- a/data/node_version.go +++ b/data/node_version.go @@ -14,4 +14,13 @@ type NodeVersion struct { Security bool `json:"security"` } -type NodeVersions = []NodeVersion +type NodeVersions []NodeVersion + +func (n NodeVersions) GetAll() []string { + var allVersions []string + for _, version := range n { + allVersions = append(allVersions, version.Version) + } + + return allVersions +} From 6d6534e1e7b378c7628e52774941224806ab8b66 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 08:19:57 +0100 Subject: [PATCH 11/49] fix data binding --- api/api.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/api.go b/api/api.go index 0d603d5..c0dd08e 100644 --- a/api/api.go +++ b/api/api.go @@ -10,7 +10,7 @@ import ( const nodeVersionURL = "https://nodejs.org/dist/index.json" -func GetNodeVersions() (*[]data.NodeVersion, error) { +func GetNodeVersions() (*data.NodeVersions, error) { response, err := http.Get(nodeVersionURL) if err != nil { @@ -18,7 +18,7 @@ func GetNodeVersions() (*[]data.NodeVersion, error) { } if response.StatusCode == http.StatusOK { - var nodeVersions []data.NodeVersion + var nodeVersions data.NodeVersions bodyBi, error := io.ReadAll(response.Body) From 650e8cd42793511d70fc5b716c4a5b71411fc3b4 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 08:20:07 +0100 Subject: [PATCH 12/49] print all versions --- main.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/main.go b/main.go index eaa7187..2a988ea 100644 --- a/main.go +++ b/main.go @@ -26,6 +26,7 @@ func main() { if err != nil { return err } + nodeVersions = versions } @@ -36,7 +37,10 @@ func main() { Usage: "show all versions", Action: func(cCtx *cli.Context) error { - fmt.Println("hehee ", nodeVersions) + for _, version := range nodeVersions.GetAll() { + fmt.Println(version) + } + return nil }, }, From 9d65c768c8c96879cd41c930dd309246bc8a7011 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 08:20:17 +0100 Subject: [PATCH 13/49] remove settings for vscode --- .vscode/settings.json | 11 ----------- 1 file changed, 11 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index c15561b..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "[json]": { - "editor.defaultFormatter": "biomejs.biome" - }, - "[jsonc]": { - "editor.defaultFormatter": "biomejs.biome" - }, - "[typescript]": { - "editor.defaultFormatter": "biomejs.biome" - } -} From 22d4485a08f04a47246f102b37ed1c0f5303ff11 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 08:20:23 +0100 Subject: [PATCH 14/49] comment implemented code --- src/index.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/index.ts b/src/index.ts index 8583c22..90c79d1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -48,7 +48,7 @@ const nodeVersions = await getNodeVersions(); if (flags.lts) { showLts(); } else if (flags.all) { - showAll(); + // showAll(); } else if (flags.allLts) { showAllLts(); } else if (flags.latestOf) { @@ -59,10 +59,10 @@ if (flags.lts) { showHelp(); } -function showAll() { - consola.log("All Versions:"); - logVersions(nodeVersions); -} +// function showAll() { +// consola.log("All Versions:"); +// logVersions(nodeVersions); +// } function showLts() { consola.info("Current LTS:"); From d1c52b74d02f3efb14c81c052d346b0e3a4c6d6f Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 08:21:19 +0100 Subject: [PATCH 15/49] Add GetLatest() method to NodeVersions --- data/node_version.go | 4 ++++ main.go | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/data/node_version.go b/data/node_version.go index 5623664..d78bb50 100644 --- a/data/node_version.go +++ b/data/node_version.go @@ -24,3 +24,7 @@ func (n NodeVersions) GetAll() []string { return allVersions } + +func (n NodeVersions) GetLatest() string { + return n[0].Version +} diff --git a/main.go b/main.go index 2a988ea..a5fd91a 100644 --- a/main.go +++ b/main.go @@ -61,7 +61,8 @@ func main() { Name: "latest", Usage: "show latest version", Action: func(cCtx *cli.Context) error { - fmt.Println("added task: ", cCtx.Args().First()) + fmt.Println(nodeVersions.GetLatest()) + return nil }, Flags: []cli.Flag{ From 1d2cc8c2aa97fd56a256ad45552a8d2feb094bda Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 08:21:50 +0100 Subject: [PATCH 16/49] run go mod tidy --- go.mod | 16 ---------------- go.sum | 36 ------------------------------------ 2 files changed, 52 deletions(-) diff --git a/go.mod b/go.mod index c6284d7..a01c458 100644 --- a/go.mod +++ b/go.mod @@ -5,23 +5,7 @@ go 1.21.7 require github.com/urfave/cli/v2 v2.27.1 require ( - github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect - github.com/charmbracelet/bubbletea v0.25.0 // indirect - github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect - github.com/lucasb-eyer/go-colorful v1.2.0 // indirect - github.com/mattn/go-isatty v0.0.18 // indirect - github.com/mattn/go-localereader v0.0.1 // indirect - github.com/mattn/go-runewidth v0.0.14 // indirect - github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b // indirect - github.com/muesli/cancelreader v0.2.2 // indirect - github.com/muesli/reflow v0.3.0 // indirect - github.com/muesli/termenv v0.15.2 // indirect - github.com/rivo/uniseg v0.2.0 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect - golang.org/x/sync v0.1.0 // indirect - golang.org/x/sys v0.7.0 // indirect - golang.org/x/term v0.6.0 // indirect - golang.org/x/text v0.3.8 // indirect ) diff --git a/go.sum b/go.sum index 63c98d0..31517c0 100644 --- a/go.sum +++ b/go.sum @@ -1,44 +1,8 @@ -github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= -github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= -github.com/charmbracelet/bubbletea v0.25.0 h1:bAfwk7jRz7FKFl9RzlIULPkStffg5k6pNt5dywy4TcM= -github.com/charmbracelet/bubbletea v0.25.0/go.mod h1:EN3QDR1T5ZdWmdfDzYcqOCAps45+QIJbLOBxmVNWNNg= -github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY= -github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= -github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= -github.com/mattn/go-isatty v0.0.18 h1:DOKFKCQ7FNG2L1rbrmstDN4QVRdS89Nkh85u68Uwp98= -github.com/mattn/go-isatty v0.0.18/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= -github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= -github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= -github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= -github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= -github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b h1:1XF24mVaiu7u+CFywTdcDo2ie1pzzhwjt6RHqzpMU34= -github.com/muesli/ansi v0.0.0-20211018074035-2e021307bc4b/go.mod h1:fQuZ0gauxyBcmsdE3ZT4NasjaRdxmbCS0jRHsrWu3Ho= -github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= -github.com/muesli/cancelreader v0.2.2/go.mod h1:3XuTXfFS2VjM+HTLZY9Ak0l6eUKfijIfMUZ4EgX0QYo= -github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= -github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= -github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= -github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= -github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= -github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/urfave/cli/v2 v2.27.1 h1:8xSQ6szndafKVRmfyeUMxkNUJQMjL1F2zmsZ+qHpfho= github.com/urfave/cli/v2 v2.27.1/go.mod h1:8qnjx1vcq5s2/wpsqoZFndg2CE5tNFyrTvS6SinrnYQ= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU= github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= -golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= -golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.6.0 h1:clScbb1cHjoCkyRbWwBEUZ5H/tIFu5TAXIqaZD0Gcjw= -golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= -golang.org/x/text v0.3.8 h1:nAL+RVCQ9uMn3vJZbV+MRnydTJFPf8qqY42YiA6MrqY= -golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= From 813770a1644adacf4ca5dc9d2c45d6b4e643d312 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 08:59:13 +0100 Subject: [PATCH 17/49] Add support for parsing LTS versions in NodeVersion struct --- data/node_version.go | 52 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/data/node_version.go b/data/node_version.go index d78bb50..ff57e85 100644 --- a/data/node_version.go +++ b/data/node_version.go @@ -1,5 +1,35 @@ package data +import ( + "encoding/json" + "fmt" +) + +type Lts struct { + BoolValue bool + StringValue string + IsBool bool +} + +func (lts Lts) UnmarshalJSON(data []byte) error { + var boolVal bool + + if err := json.Unmarshal(data, &boolVal); err == nil { + lts.BoolValue = boolVal + lts.IsBool = true + return nil + } + + var strVal string + if err := json.Unmarshal(data, &strVal); err == nil { + lts.StringValue = strVal + lts.IsBool = false + return nil + } + + return fmt.Errorf("lts must be a boolean or a string") +} + type NodeVersion struct { Version string `json:"version"` Date string `json:"date"` @@ -10,7 +40,7 @@ type NodeVersion struct { Zlib string `json:"zlib,omitempty"` Openssl string `json:"openssl,omitempty"` Modules string `json:"modules,omitempty"` - Lts bool `json:"lts"` + Lts Lts `json:"lts"` Security bool `json:"security"` } @@ -28,3 +58,23 @@ func (n NodeVersions) GetAll() []string { func (n NodeVersions) GetLatest() string { return n[0].Version } + +func (n NodeVersions) GetCurrentLts() string { + + allLts := n.GetAllLts() + + return allLts[0] +} + +func (n NodeVersions) GetAllLts() []string { + var ltsVersions []string + + for _, version := range n { + + if !version.Lts.IsBool { + ltsVersions = append(ltsVersions, version.Version) + } + } + + return ltsVersions +} From 826f0f35d5e8d6f01cf77e92cb7d41581e6e68f8 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 08:59:19 +0100 Subject: [PATCH 18/49] Refactor CLI command actions to use consistent variable names --- main.go | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/main.go b/main.go index a5fd91a..124257c 100644 --- a/main.go +++ b/main.go @@ -35,7 +35,7 @@ func main() { Commands: []*cli.Command{{ Name: "all", Usage: "show all versions", - Action: func(cCtx *cli.Context) error { + Action: func(ctx *cli.Context) error { for _, version := range nodeVersions.GetAll() { fmt.Println(version) @@ -47,20 +47,35 @@ func main() { { Name: "lts", Usage: "show LTS version", - Action: func(cCtx *cli.Context) error { + Action: func(ctx *cli.Context) error { + + // If we don't validate the flag, both Actions will be executed + // and overlap the output + if !ctx.Bool("all") { + fmt.Println(nodeVersions.GetCurrentLts()) + } + return nil }, Flags: []cli.Flag{ &cli.BoolFlag{ Name: "all", Usage: "show all LTS versions", + Action: func(ctx *cli.Context, value bool) error { + + for _, version := range nodeVersions.GetAllLts() { + fmt.Println(version) + } + + return nil + }, }, }, }, { Name: "latest", Usage: "show latest version", - Action: func(cCtx *cli.Context) error { + Action: func(ctx *cli.Context) error { fmt.Println(nodeVersions.GetLatest()) return nil From 684954ca24688bae8c9d43d4920caadba7045d63 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 10:32:01 +0100 Subject: [PATCH 19/49] Refactor NodeVersion struct and Lts type --- data/node_version.go | 45 +++++++++++++------------------------------- 1 file changed, 13 insertions(+), 32 deletions(-) diff --git a/data/node_version.go b/data/node_version.go index ff57e85..e120802 100644 --- a/data/node_version.go +++ b/data/node_version.go @@ -1,34 +1,6 @@ package data -import ( - "encoding/json" - "fmt" -) - -type Lts struct { - BoolValue bool - StringValue string - IsBool bool -} - -func (lts Lts) UnmarshalJSON(data []byte) error { - var boolVal bool - - if err := json.Unmarshal(data, &boolVal); err == nil { - lts.BoolValue = boolVal - lts.IsBool = true - return nil - } - - var strVal string - if err := json.Unmarshal(data, &strVal); err == nil { - lts.StringValue = strVal - lts.IsBool = false - return nil - } - - return fmt.Errorf("lts must be a boolean or a string") -} +type Lts interface{} type NodeVersion struct { Version string `json:"version"` @@ -44,10 +16,20 @@ type NodeVersion struct { Security bool `json:"security"` } +func (n NodeVersion) IsLts() bool { + switch n.Lts.(type) { + case bool: + return false + default: + return true + } +} + type NodeVersions []NodeVersion func (n NodeVersions) GetAll() []string { var allVersions []string + for _, version := range n { allVersions = append(allVersions, version.Version) } @@ -67,11 +49,10 @@ func (n NodeVersions) GetCurrentLts() string { } func (n NodeVersions) GetAllLts() []string { - var ltsVersions []string + var ltsVersions []string = []string{} for _, version := range n { - - if !version.Lts.IsBool { + if version.IsLts() { ltsVersions = append(ltsVersions, version.Version) } } From e7d5f0d15eb56b6e4d1921c789acefd80c825215 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 10:32:49 +0100 Subject: [PATCH 20/49] add debug command --- .vscode/launch.json | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .vscode/launch.json diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..4c7be42 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,16 @@ +{ + // Use IntelliSense to learn about possible attributes. + // Hover to view descriptions of existing attributes. + // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Launch file", + "type": "go", + "request": "launch", + "mode": "debug", + "program": "main.go", + "args": ["lts"] + }, + ] +} From 65d021f38bff3c0ff9816e1baf468d5820978279 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 10:33:02 +0100 Subject: [PATCH 21/49] remove bin --- bin/node-versions | 3 --- 1 file changed, 3 deletions(-) delete mode 100755 bin/node-versions diff --git a/bin/node-versions b/bin/node-versions deleted file mode 100755 index 752da35..0000000 --- a/bin/node-versions +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node - -import("../dist/node-versions.mjs"); From 5b96387f9d45174ac0fce5d664d836fff6912ef2 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 10:34:49 +0100 Subject: [PATCH 22/49] Refactor CLI flag in main.go --- main.go | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/main.go b/main.go index 124257c..bc6df9e 100644 --- a/main.go +++ b/main.go @@ -59,8 +59,9 @@ func main() { }, Flags: []cli.Flag{ &cli.BoolFlag{ - Name: "all", - Usage: "show all LTS versions", + Name: "all", + Usage: "show all LTS versions", + Aliases: []string{"a"}, Action: func(ctx *cli.Context, value bool) error { for _, version := range nodeVersions.GetAllLts() { From 448c31477535f7f39c90f966709c4d9680c1ee58 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 11:02:00 +0100 Subject: [PATCH 23/49] add semver dependency --- go.mod | 5 ++++- go.sum | 2 ++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index a01c458..77fb7eb 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,10 @@ module node-versions-cli go 1.21.7 -require github.com/urfave/cli/v2 v2.27.1 +require ( + github.com/Masterminds/semver/v3 v3.2.1 + github.com/urfave/cli/v2 v2.27.1 +) require ( github.com/cpuguy83/go-md2man/v2 v2.0.2 // indirect diff --git a/go.sum b/go.sum index 31517c0..207b451 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,5 @@ +github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= +github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= From 1c94be27b9a0c143355c238437977233e3b13b5a Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 11:28:38 +0100 Subject: [PATCH 24/49] Refactor CLI usage and add option to get latest version of a specific major version --- data/node_version.go | 22 ++++++++++++++++++++++ main.go | 32 ++++++++++++++++++++++---------- 2 files changed, 44 insertions(+), 10 deletions(-) diff --git a/data/node_version.go b/data/node_version.go index e120802..f8f8dd4 100644 --- a/data/node_version.go +++ b/data/node_version.go @@ -1,5 +1,12 @@ package data +import ( + "errors" + "strconv" + + "github.com/Masterminds/semver/v3" +) + type Lts interface{} type NodeVersion struct { @@ -41,6 +48,21 @@ func (n NodeVersions) GetLatest() string { return n[0].Version } +func (n NodeVersions) GetLatestOf(majorVersionNumber string) (*string, error) { + for _, version := range n { + versionWithoutV := version.Version[1:len(version.Version)] + + nodeVersion, _ := semver.NewVersion(versionWithoutV) + majorVersionAsInt, _ := strconv.ParseUint(majorVersionNumber, 10, 64) + + if majorVersionAsInt == nodeVersion.Major() { + return &version.Version, nil + } + } + + return nil, errors.New("no version found for major version " + majorVersionNumber) +} + func (n NodeVersions) GetCurrentLts() string { allLts := n.GetAllLts() diff --git a/main.go b/main.go index bc6df9e..98967ea 100644 --- a/main.go +++ b/main.go @@ -14,9 +14,14 @@ func main() { var nodeVersions *data.NodeVersions app := (&cli.App{ - Name: "node-versions", - Version: "2.0.0", - Description: "A simple CLI to check node versions", + Name: "node-versions", + Usage: "A simple CLI to check node versions", + UsageText: `node-versions all +node-versions lts +node-versions lts --all +node-versions latest +node-versions latest 14 + `, EnableBashCompletion: true, Before: func(ctx *cli.Context) error { // We don't want to call the API if there's no subcommand @@ -76,17 +81,24 @@ func main() { { Name: "latest", Usage: "show latest version", + UsageText: `node-versions latest +node-versions latest [major-version]`, Action: func(ctx *cli.Context) error { - fmt.Println(nodeVersions.GetLatest()) + if ctx.Args().Len() > 0 { + desiredMajorVersion := ctx.Args().First() + version, err := nodeVersions.GetLatestOf(desiredMajorVersion) + + if err != nil { + return err + } + + fmt.Println(*version) + } else { + fmt.Println(nodeVersions.GetLatest()) + } return nil }, - Flags: []cli.Flag{ - &cli.StringFlag{ - Name: "of", - Usage: "show latest version of a specific version", - }, - }, }, }, }) From f9ea821c242c3a0fd91e9dff8c956d8450b98545 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 11:28:47 +0100 Subject: [PATCH 25/49] drop TS --- src/index.ts | 125 --------------------------------------------------- 1 file changed, 125 deletions(-) delete mode 100644 src/index.ts diff --git a/src/index.ts b/src/index.ts deleted file mode 100644 index 90c79d1..0000000 --- a/src/index.ts +++ /dev/null @@ -1,125 +0,0 @@ -import meow from "meow"; -import consola from "consola"; -import groupBy from "just-group-by"; - -import { NodeVersions } from "./schema"; - -const { flags, showHelp } = meow( - `🌟 Node Versions CLI 🌟 - -Usage: -$ node-versions - -Options: ---all Show all versions ---all-lts Show all LTS versions ---latest Show latest version ---latest-of Show latest version of a specific version ---lts Show current LTS version - -Examples: -$ node-versions --all -$ node-versions --all-lts -$ node-versions --latest -$ node-versions --latest-of 20 -$ node-versions --lts -`, - { - importMeta: import.meta, - flags: { - lts: { - type: "boolean", - }, - allLts: { - type: "boolean", - }, - latest: { - type: "boolean", - }, - latestOf: { - type: "string", - }, - }, - }, -); - -const nodeVersions = await getNodeVersions(); - -if (flags.lts) { - showLts(); -} else if (flags.all) { - // showAll(); -} else if (flags.allLts) { - showAllLts(); -} else if (flags.latestOf) { - showLatestOf(); -} else if (flags.latest) { - showLatest(); -} else { - showHelp(); -} - -// function showAll() { -// consola.log("All Versions:"); -// logVersions(nodeVersions); -// } - -function showLts() { - consola.info("Current LTS:"); - const [currentLTS] = nodeVersions.filter((version) => version.lts); - logVersions([currentLTS]); -} - -function showAllLts() { - consola.info("LTS Versions:"); - const ltsVersions = nodeVersions.filter((version) => version.lts); - logVersions(ltsVersions); -} - -function logVersions(nodeVersions: NodeVersions) { - const ascendingVersions = nodeVersions.sort((a, b) => - Bun.semver.order(a.version, b.version), - ); - - const result = ascendingVersions.reduce((acc, nodeVersion) => { - return `${acc}${nodeVersion.version}\n`; - }, ""); - - consola.log(result.trim()); -} - -function showLatestOf() { - const { latestOf } = flags; - const prependVersion = `v${latestOf}`; - - const groupedVersions = groupBy( - nodeVersions, - (version) => version.version.split(".")[0], - ); - - const allVersionsOf = groupedVersions[prependVersion]; - - if (!allVersionsOf) { - consola.error(`No versions found for ${prependVersion}`); - return; - } - - const [latestVersion] = allVersionsOf; - - consola.info(`Latest version of ${prependVersion}:`); - logVersions([latestVersion]); -} - -function showLatest() { - const [latestVersions] = nodeVersions; - console.log("Latest version:"); - logVersions([latestVersions]); -} - -async function getNodeVersions() { - const response = await fetch("https://nodejs.org/dist/index.json"); - - const nodeVersionsJson = await response.json(); - - return NodeVersions.parse(nodeVersionsJson); -} From 405a0e05397ef5685a35ae3894189b805406c7dd Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sat, 10 Feb 2024 11:29:22 +0100 Subject: [PATCH 26/49] update deps --- bun.lockb | Bin 116893 -> 110677 bytes package.json | 5 ----- 2 files changed, 5 deletions(-) diff --git a/bun.lockb b/bun.lockb index c9e0d8e1739ae5db77d2919433d38472da70c33c..665e38ce8fdcf0f9a7d49e4b7159adc6db623e8c 100755 GIT binary patch delta 23657 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 Date: Sun, 11 Feb 2024 09:32:19 +0100 Subject: [PATCH 27/49] add ci file --- .github/workflows/ci2.yml | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 .github/workflows/ci2.yml diff --git a/.github/workflows/ci2.yml b/.github/workflows/ci2.yml new file mode 100644 index 0000000..32b1c91 --- /dev/null +++ b/.github/workflows/ci2.yml @@ -0,0 +1,27 @@ +name: Go + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + + - uses: actions/checkout@v4 + name: Checkout repository + + - name: Setup Go + uses: actions/setup-go@v4 + with: + go-version: 1.21.7 + + - name: Display Go version + run: go version + + - name: Install dependencies + run: go get . + + - name: Build + run: go build -v -o dist/node-versions . \ No newline at end of file From e0cc68a44266a02503e91a6789b02028f340a4c2 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 09:56:01 +0100 Subject: [PATCH 28/49] Update package.json and .gitignore, add .goreleaser.yaml --- .gitignore | 2 + .goreleaser.yaml | 46 + bun.lockb | Bin 110677 -> 0 bytes package-lock.json | 3676 ++++++++++++++++++++++++++++++++++++++++++++ package.json | 21 +- scripts/release.ts | 39 - 6 files changed, 3735 insertions(+), 49 deletions(-) create mode 100644 .goreleaser.yaml delete mode 100755 bun.lockb create mode 100644 package-lock.json delete mode 100644 scripts/release.ts diff --git a/.gitignore b/.gitignore index 468f82a..cb55f60 100644 --- a/.gitignore +++ b/.gitignore @@ -173,3 +173,5 @@ dist # Finder (MacOS) folder config .DS_Store + +dist/ diff --git a/.goreleaser.yaml b/.goreleaser.yaml new file mode 100644 index 0000000..4094b76 --- /dev/null +++ b/.goreleaser.yaml @@ -0,0 +1,46 @@ +# This is an example .goreleaser.yml file with some sensible defaults. +# Make sure to check the documentation at https://goreleaser.com + +# The lines below are called `modelines`. See `:help modeline` +# Feel free to remove those if you don't want/need to use them. +# yaml-language-server: $schema=https://goreleaser.com/static/schema.json +# vim: set ts=2 sw=2 tw=0 fo=cnqoj + +version: 1 + +before: + hooks: + # You may remove this if you don't use go modules. + - go mod tidy + # you may remove this if you don't need go generate + - go generate ./... + +builds: + - env: + - CGO_ENABLED=0 + goos: + - linux + - windows + - darwin + +archives: + - format: tar.gz + # this name template makes the OS and Arch compatible with the results of `uname`. + name_template: >- + {{ .ProjectName }}_ + {{- title .Os }}_ + {{- if eq .Arch "amd64" }}x86_64 + {{- else if eq .Arch "386" }}i386 + {{- else }}{{ .Arch }}{{ end }} + {{- if .Arm }}v{{ .Arm }}{{ end }} + # use zip for windows archives + format_overrides: + - goos: windows + format: zip + +changelog: + sort: asc + filters: + exclude: + - "^docs:" + - "^test:" diff --git a/bun.lockb b/bun.lockb deleted file mode 100755 index 665e38ce8fdcf0f9a7d49e4b7159adc6db623e8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 110677 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

A@R0ri;<>xJ&24tNF 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 diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..19c6035 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,3676 @@ +{ + "name": "@raulfdm/node-versions", + "version": "1.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "@raulfdm/node-versions", + "version": "1.1.0", + "dependencies": { + "go-npm": "0.1.9" + }, + "bin": { + "node-versions": "bin/node-versions" + }, + "devDependencies": { + "@changesets/cli": "2.27.1" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.23.9", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@changesets/apply-release-plan": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/config": "^3.0.0", + "@changesets/get-version-range-type": "^0.4.0", + "@changesets/git": "^3.0.0", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "detect-indent": "^6.0.0", + "fs-extra": "^7.0.1", + "lodash.startcase": "^4.4.0", + "outdent": "^0.5.0", + "prettier": "^2.7.1", + "resolve-from": "^5.0.0", + "semver": "^7.5.3" + } + }, + "node_modules/@changesets/assemble-release-plan": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/errors": "^0.2.0", + "@changesets/get-dependents-graph": "^2.0.0", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "semver": "^7.5.3" + } + }, + "node_modules/@changesets/changelog-git": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/types": "^6.0.0" + } + }, + "node_modules/@changesets/cli": { + "version": "2.27.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/apply-release-plan": "^7.0.0", + "@changesets/assemble-release-plan": "^6.0.0", + "@changesets/changelog-git": "^0.2.0", + "@changesets/config": "^3.0.0", + "@changesets/errors": "^0.2.0", + "@changesets/get-dependents-graph": "^2.0.0", + "@changesets/get-release-plan": "^4.0.0", + "@changesets/git": "^3.0.0", + "@changesets/logger": "^0.1.0", + "@changesets/pre": "^2.0.0", + "@changesets/read": "^0.6.0", + "@changesets/types": "^6.0.0", + "@changesets/write": "^0.3.0", + "@manypkg/get-packages": "^1.1.3", + "@types/semver": "^7.5.0", + "ansi-colors": "^4.1.3", + "chalk": "^2.1.0", + "ci-info": "^3.7.0", + "enquirer": "^2.3.0", + "external-editor": "^3.1.0", + "fs-extra": "^7.0.1", + "human-id": "^1.0.2", + "meow": "^6.0.0", + "outdent": "^0.5.0", + "p-limit": "^2.2.0", + "preferred-pm": "^3.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.5.3", + "spawndamnit": "^2.0.0", + "term-size": "^2.1.0", + "tty-table": "^4.1.5" + }, + "bin": { + "changeset": "bin.js" + } + }, + "node_modules/@changesets/config": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/errors": "^0.2.0", + "@changesets/get-dependents-graph": "^2.0.0", + "@changesets/logger": "^0.1.0", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "fs-extra": "^7.0.1", + "micromatch": "^4.0.2" + } + }, + "node_modules/@changesets/errors": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "extendable-error": "^0.1.5" + } + }, + "node_modules/@changesets/get-dependents-graph": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "chalk": "^2.1.0", + "fs-extra": "^7.0.1", + "semver": "^7.5.3" + } + }, + "node_modules/@changesets/get-release-plan": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/assemble-release-plan": "^6.0.0", + "@changesets/config": "^3.0.0", + "@changesets/pre": "^2.0.0", + "@changesets/read": "^0.6.0", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3" + } + }, + "node_modules/@changesets/get-version-range-type": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@changesets/git": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/errors": "^0.2.0", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "is-subdir": "^1.1.1", + "micromatch": "^4.0.2", + "spawndamnit": "^2.0.0" + } + }, + "node_modules/@changesets/logger": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^2.1.0" + } + }, + "node_modules/@changesets/parse": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@changesets/types": "^6.0.0", + "js-yaml": "^3.13.1" + } + }, + "node_modules/@changesets/pre": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/errors": "^0.2.0", + "@changesets/types": "^6.0.0", + "@manypkg/get-packages": "^1.1.3", + "fs-extra": "^7.0.1" + } + }, + "node_modules/@changesets/read": { + "version": "0.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/git": "^3.0.0", + "@changesets/logger": "^0.1.0", + "@changesets/parse": "^0.4.0", + "@changesets/types": "^6.0.0", + "chalk": "^2.1.0", + "fs-extra": "^7.0.1", + "p-filter": "^2.1.0" + } + }, + "node_modules/@changesets/types": { + "version": "6.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@changesets/write": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.20.1", + "@changesets/types": "^6.0.0", + "fs-extra": "^7.0.1", + "human-id": "^1.0.2", + "prettier": "^2.7.1" + } + }, + "node_modules/@manypkg/find-root": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.5.5", + "@types/node": "^12.7.1", + "find-up": "^4.1.0", + "fs-extra": "^8.1.0" + } + }, + "node_modules/@manypkg/find-root/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@manypkg/find-root/node_modules/find-up/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@manypkg/find-root/node_modules/find-up/node_modules/locate-path/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@manypkg/find-root/node_modules/fs-extra": { + "version": "8.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@manypkg/get-packages": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.5.5", + "@changesets/types": "^4.0.1", + "@manypkg/find-root": "^1.1.0", + "fs-extra": "^8.1.0", + "globby": "^11.0.0", + "read-yaml-file": "^1.1.0" + } + }, + "node_modules/@manypkg/get-packages/node_modules/@changesets/types": { + "version": "4.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@manypkg/get-packages/node_modules/fs-extra": { + "version": "8.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "12.20.55", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.5.6", + "dev": true, + "license": "MIT" + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/better-path-resolve": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-windows": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", + "dependencies": { + "inherits": "~2.0.0" + }, + "engines": { + "node": "0.4 || >=0.5.8" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/breakword": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "wcwidth": "^1.0.1" + } + }, + "node_modules/call-bind": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "set-function-length": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase-keys": { + "version": "6.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "node_modules/chalk": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ci-info": { + "version": "3.9.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" + }, + "node_modules/csv": { + "version": "5.5.3", + "dev": true, + "license": "MIT", + "dependencies": { + "csv-generate": "^3.4.3", + "csv-parse": "^4.16.3", + "csv-stringify": "^5.6.5", + "stream-transform": "^2.1.3" + }, + "engines": { + "node": ">= 0.1.90" + } + }, + "node_modules/csv-generate": { + "version": "3.4.3", + "dev": true, + "license": "MIT" + }, + "node_modules/csv-parse": { + "version": "4.16.3", + "dev": true, + "license": "MIT" + }, + "node_modules/csv-stringify": { + "version": "5.6.5", + "dev": true, + "license": "MIT" + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.2", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-indent": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/enquirer": { + "version": "2.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.22.3", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.5", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.2", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.2", + "has-tostringtag": "^1.0.0", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extendable-error": { + "version": "0.1.7", + "dev": true, + "license": "MIT" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fastq": { + "version": "1.17.1", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-yarn-workspace-root2": { + "version": "1.2.16", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "micromatch": "^4.0.2", + "pkg-dir": "^4.2.0" + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/fs-extra": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dependencies": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globalthis": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/go-npm": { + "version": "0.1.9", + "resolved": "https://registry.npmjs.org/go-npm/-/go-npm-0.1.9.tgz", + "integrity": "sha512-tuLDV8IA8ipkKmCD92PoUvJGtsCDH4HLO2VG0xkoavMj16WVaPznZSX2aW/AMXxyliIYm6J51+WC1Xse0neJDg==", + "dependencies": { + "mkdirp": "^0.5.1", + "request": "^2.81.0", + "tar": "^2.2.1" + }, + "bin": { + "go-npm": "bin/index.js" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "license": "ISC" + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "dev": true, + "license": "MIT" + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/hard-rejection": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "dev": true, + "license": "ISC" + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/human-id": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-subdir": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "better-path-resolve": "1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-windows": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "4.1.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "dev": true, + "license": "MIT" + }, + "node_modules/load-yaml-file": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.5", + "js-yaml": "^3.13.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/map-obj": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow": { + "version": "6.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "^4.0.2", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.13.1", + "yargs-parser": "^18.1.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/min-indent": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/mixme": { + "version": "0.5.10", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "engines": { + "node": "*" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/outdent": { + "version": "0.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/p-filter": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-map": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate/node_modules/p-limit": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/preferred-pm": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^5.0.0", + "find-yarn-workspace-root2": "1.2.16", + "path-exists": "^4.0.0", + "which-pm": "2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "dev": true, + "license": "ISC" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/find-up/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/find-up/node_modules/locate-path/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=8" + } + }, + "node_modules/read-yaml-file": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.5", + "js-yaml": "^3.6.1", + "pify": "^4.0.1", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/redent": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "dev": true, + "license": "MIT" + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "set-function-name": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/resolve": { + "version": "1.22.8", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "get-intrinsic": "^1.2.2", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/semver": { + "version": "7.6.0", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/set-function-length": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/side-channel": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/smartwrap": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "array.prototype.flat": "^1.2.3", + "breakword": "^1.0.5", + "grapheme-splitter": "^1.0.4", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1", + "yargs": "^15.1.0" + }, + "bin": { + "smartwrap": "src/terminal-adapter.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/smartwrap/node_modules/yargs": { + "version": "15.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smartwrap/node_modules/yargs/node_modules/cliui": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/smartwrap/node_modules/yargs/node_modules/cliui/node_modules/wrap-ansi": { + "version": "6.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smartwrap/node_modules/yargs/node_modules/cliui/node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/smartwrap/node_modules/yargs/node_modules/cliui/node_modules/wrap-ansi/node_modules/ansi-styles/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/smartwrap/node_modules/yargs/node_modules/cliui/node_modules/wrap-ansi/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/smartwrap/node_modules/yargs/node_modules/find-up": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smartwrap/node_modules/yargs/node_modules/find-up/node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smartwrap/node_modules/yargs/node_modules/find-up/node_modules/locate-path/node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/smartwrap/node_modules/yargs/node_modules/y18n": { + "version": "4.0.3", + "dev": true, + "license": "ISC" + }, + "node_modules/spawndamnit": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "node_modules/spawndamnit/node_modules/cross-spawn": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "node_modules/spawndamnit/node_modules/cross-spawn/node_modules/lru-cache": { + "version": "4.1.5", + "dev": true, + "license": "ISC", + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/spawndamnit/node_modules/cross-spawn/node_modules/lru-cache/node_modules/yallist": { + "version": "2.1.2", + "dev": true, + "license": "ISC" + }, + "node_modules/spawndamnit/node_modules/cross-spawn/node_modules/shebang-command": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spawndamnit/node_modules/cross-spawn/node_modules/shebang-command/node_modules/shebang-regex": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spawndamnit/node_modules/cross-spawn/node_modules/which": { + "version": "1.3.1", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/spawndamnit/node_modules/signal-exit": { + "version": "3.0.7", + "dev": true, + "license": "ISC" + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.4.0", + "dev": true, + "license": "CC-BY-3.0" + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.17", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stream-transform": { + "version": "2.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "mixme": "^0.5.1" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-indent": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "min-indent": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "deprecated": "This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.", + "dependencies": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "node_modules/term-size": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/trim-newlines": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tty-table": { + "version": "4.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.2", + "csv": "^5.5.3", + "kleur": "^4.1.5", + "smartwrap": "^2.0.2", + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.1", + "yargs": "^17.7.1" + }, + "bin": { + "tty-table": "adapters/terminal-adapter.js" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/tty-table/node_modules/chalk": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/tty-table/node_modules/chalk/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/tty-table/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tty-table/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/tty-table/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tty-table/node_modules/chalk/node_modules/supports-color/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, + "node_modules/type-fest": { + "version": "0.13.1", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "has-proto": "^1.0.1", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/which-pm": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "load-yaml-file": "^0.2.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8.15" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.14", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.6", + "call-bind": "^1.0.5", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/y18n": { + "version": "5.0.8", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/yargs": { + "version": "17.7.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json index bb28199..8cef7cd 100644 --- a/package.json +++ b/package.json @@ -9,16 +9,17 @@ "bin": { "node-versions": "./bin/node-versions" }, - "files": ["dist", "bin"], - "scripts": { - "dev": "bun run src/index.ts", - "build:standalone-test": "bun build src/index.ts --compile --outfile dist/node-versions --target bun --minify", - "build": "bun build src/index.ts --outfile dist/node-versions.mjs --target node --minify" - }, + "files": ["dist"], + "scripts": {}, "devDependencies": { - "@changesets/cli": "2.27.1", - "execa": "8.0.1", - "typescript": "5.3.3", - "zod": "3.22.4" + "@changesets/cli": "2.27.1" + }, + "dependencies": { + "go-npm": "0.1.9" + }, + "goBinary": { + "name": "node-versions", + "path": "./dist", + "url": "https://github.com/raulfdm/node-versions-cli/releases/download/v{{version}}/myGoPackage_{{version}}_{{platform}}_{{arch}}.tar.gz" } } diff --git a/scripts/release.ts b/scripts/release.ts deleted file mode 100644 index e612400..0000000 --- a/scripts/release.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { $ } from "bun"; -import { execaCommand } from "execa"; -import consola from "consola"; - -consola.info("Starting release process"); - -try { - consola.log("Trying to publish"); - await execaCommand("pnpm publish --no-git-checks", { - shell: true, - all: true, - }); - consola.success("Published successfully"); - - consola.log("Trying to push tags..."); - await $`git push --follow-tags`; - consola.success("tags pushed successfully"); -} catch (error) { - if (error instanceof Error) { - if ( - error.message.includes( - "You cannot publish over the previously published versions", - ) - ) { - console.info("Version already published, skipping..."); - process.exit(0); - } else { - consola.error("Something went wrong", error.message); - process.exit(1); - } - } else { - consola.error("Unknown error", error); - process.exit(1); - } -} - -// const a = await $`git`.text(); - -// console.log(a); From 0b671889ddea97d7a7c01b4188a9534f63156d3b Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 09:56:40 +0100 Subject: [PATCH 29/49] Refactor CI workflow and update Go version --- .github/workflows/ci.yml | 33 ++++++++++++++++----------------- .github/workflows/ci2.yml | 27 --------------------------- 2 files changed, 16 insertions(+), 44 deletions(-) delete mode 100644 .github/workflows/ci2.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d7b5d9a..bbc41b5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,28 +1,27 @@ name: CI -on: - push: - branches: - - main - - pull_request: - branches: - - main +on: [push] jobs: - test: + build: + runs-on: ubuntu-latest + steps: - - name: Checkout Repo - uses: actions/checkout@v4 - - name: Setup Bun - uses: oven-sh/setup-bun@v1 + - uses: actions/checkout@v4 + name: Checkout repository + + - name: Setup Go + uses: actions/setup-go@v4 with: - bun-version: 1.0.25 + go-version: 1.21.7 + + - name: Display Go version + run: go version - - name: Install Dependencies - run: bun i + - name: Install dependencies + run: go get . - name: Build - run: bun run build + run: go build -v -o dist/node-versions . \ No newline at end of file diff --git a/.github/workflows/ci2.yml b/.github/workflows/ci2.yml deleted file mode 100644 index 32b1c91..0000000 --- a/.github/workflows/ci2.yml +++ /dev/null @@ -1,27 +0,0 @@ -name: Go - -on: [push] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - - uses: actions/checkout@v4 - name: Checkout repository - - - name: Setup Go - uses: actions/setup-go@v4 - with: - go-version: 1.21.7 - - - name: Display Go version - run: go version - - - name: Install dependencies - run: go get . - - - name: Build - run: go build -v -o dist/node-versions . \ No newline at end of file From b412ee3a146a9f73b82c173795456d6b4c7c92f9 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 10:09:30 +0100 Subject: [PATCH 30/49] try goreleaser --- .github/workflows/ci.yml | 3 --- .github/workflows/release.yml | 30 ++++++++++++------------------ .goreleaser.yaml | 5 +++++ 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bbc41b5..e7847a6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,9 +17,6 @@ jobs: with: go-version: 1.21.7 - - name: Display Go version - run: go version - - name: Install dependencies run: go get . diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fa4ba1a..8b6d7eb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,9 +1,9 @@ name: Release on: - push: - branches: - - main + push + # branches: + # - main concurrency: ${{ github.workflow }}-${{ github.ref }} @@ -15,22 +15,16 @@ jobs: - name: Checkout Repo uses: actions/checkout@v4 - - name: Setup Bun - uses: oven-sh/setup-bun@v1 + - name: Setup Go + uses: actions/setup-go@v4 with: - bun-version: 1.0.25 + go-version: 1.21.7 - - name: Install Dependencies - run: bun i + - name: Install dependencies + run: go get . - - name: Install pnpm - run: bun i -g pnpm + - name: Install goreleaser + run: go install github.com/goreleaser/goreleaser@latest - - name: Create Release Pull Request - uses: changesets/action@v1 - with: - publish: bun run scripts/release.ts - createGithubReleases: true - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + - name: Release + run: goreleaser release --rm-dist \ No newline at end of file diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 4094b76..9fcbd54 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -44,3 +44,8 @@ changelog: exclude: - "^docs:" - "^test:" + +release: + github: + owner: raulfdm + name: node-versions-cli \ No newline at end of file From 94915c2fdb43ef9a4bd270d3e7eb35280c4b3539 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 11:01:29 +0100 Subject: [PATCH 31/49] add GITHUB_TOKEN --- .github/workflows/release.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 8b6d7eb..1865a2a 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,4 +27,6 @@ jobs: run: go install github.com/goreleaser/goreleaser@latest - name: Release - run: goreleaser release --rm-dist \ No newline at end of file + run: goreleaser release --rm-dist + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 8f391ce2b292060d4ad778b7bd464a016fc23f32 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 11:10:12 +0100 Subject: [PATCH 32/49] fix release command --- .github/workflows/release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1865a2a..840590e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -27,6 +27,6 @@ jobs: run: go install github.com/goreleaser/goreleaser@latest - name: Release - run: goreleaser release --rm-dist + run: goreleaser release --clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 418de9ec2a5179d9fffc4741899a259b845a283a Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 11:28:59 +0100 Subject: [PATCH 33/49] use goreleaser action --- .github/workflows/release.yml | 38 +++++++++++++++++------------------ 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 840590e..ef61bbc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,32 +1,30 @@ -name: Release +name: goreleaser on: - push - # branches: - # - main + pull_request: + push: -concurrency: ${{ github.workflow }}-${{ github.ref }} +permissions: + contents: write jobs: - release: - name: Release + goreleaser: runs-on: ubuntu-latest steps: - - name: Checkout Repo + - + name: Checkout uses: actions/checkout@v4 - - - name: Setup Go + with: + fetch-depth: 0 + - + name: Set up Go uses: actions/setup-go@v4 + - + name: Run GoReleaser + uses: goreleaser/goreleaser-action@v5 with: - go-version: 1.21.7 - - - name: Install dependencies - run: go get . - - - name: Install goreleaser - run: go install github.com/goreleaser/goreleaser@latest - - - name: Release - run: goreleaser release --clean + distribution: goreleaser + version: latest + args: release --clean env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 4b4eaf0a42b6bd6edbca53a06556df38c7aa0c08 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 11:34:41 +0100 Subject: [PATCH 34/49] remove pull_request from release --- .github/workflows/release.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ef61bbc..26f3e42 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,7 +1,6 @@ name: goreleaser on: - pull_request: push: permissions: From 76f24705b0a65fe34630d77932490d172f783cfd Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 11:44:43 +0100 Subject: [PATCH 35/49] update go --- .github/workflows/release.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 26f3e42..601ecf9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -18,12 +18,15 @@ jobs: - name: Set up Go uses: actions/setup-go@v4 - - - name: Run GoReleaser + with: + go-version: 1.21.7 + + - name: Run GoReleaser uses: goreleaser/goreleaser-action@v5 with: distribution: goreleaser version: latest args: release --clean + env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file From 84b98197ba63873d57d64ea485f797bf84d7a13e Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 11:53:38 +0100 Subject: [PATCH 36/49] only push on tags --- .github/workflows/release.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 601ecf9..14a48b4 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,7 +1,9 @@ -name: goreleaser +name: Release on: push: + tags: + - '*' permissions: contents: write From b4e5b9655477ebdc95ae91303a2528d3eb72ab4f Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 12:27:25 +0100 Subject: [PATCH 37/49] run CI on PR and push to main branch --- .github/workflows/ci.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e7847a6..385988f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,6 +1,10 @@ name: CI -on: [push] +on: + pull_request: + push: + branches: + - main jobs: build: @@ -21,4 +25,4 @@ jobs: run: go get . - name: Build - run: go build -v -o dist/node-versions . \ No newline at end of file + run: go build -v . \ No newline at end of file From a30b9cbe8ad551bc4ba87c09f6199e4d69f1609a Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 13:00:10 +0100 Subject: [PATCH 38/49] remove package lock --- package-lock.json | 3676 --------------------------------------------- 1 file changed, 3676 deletions(-) delete mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 19c6035..0000000 --- a/package-lock.json +++ /dev/null @@ -1,3676 +0,0 @@ -{ - "name": "@raulfdm/node-versions", - "version": "1.1.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "@raulfdm/node-versions", - "version": "1.1.0", - "dependencies": { - "go-npm": "0.1.9" - }, - "bin": { - "node-versions": "bin/node-versions" - }, - "devDependencies": { - "@changesets/cli": "2.27.1" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.23.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.23.4", - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.23.4", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.23.9", - "dev": true, - "license": "MIT", - "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@changesets/apply-release-plan": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/config": "^3.0.0", - "@changesets/get-version-range-type": "^0.4.0", - "@changesets/git": "^3.0.0", - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3", - "detect-indent": "^6.0.0", - "fs-extra": "^7.0.1", - "lodash.startcase": "^4.4.0", - "outdent": "^0.5.0", - "prettier": "^2.7.1", - "resolve-from": "^5.0.0", - "semver": "^7.5.3" - } - }, - "node_modules/@changesets/assemble-release-plan": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/errors": "^0.2.0", - "@changesets/get-dependents-graph": "^2.0.0", - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3", - "semver": "^7.5.3" - } - }, - "node_modules/@changesets/changelog-git": { - "version": "0.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@changesets/types": "^6.0.0" - } - }, - "node_modules/@changesets/cli": { - "version": "2.27.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/apply-release-plan": "^7.0.0", - "@changesets/assemble-release-plan": "^6.0.0", - "@changesets/changelog-git": "^0.2.0", - "@changesets/config": "^3.0.0", - "@changesets/errors": "^0.2.0", - "@changesets/get-dependents-graph": "^2.0.0", - "@changesets/get-release-plan": "^4.0.0", - "@changesets/git": "^3.0.0", - "@changesets/logger": "^0.1.0", - "@changesets/pre": "^2.0.0", - "@changesets/read": "^0.6.0", - "@changesets/types": "^6.0.0", - "@changesets/write": "^0.3.0", - "@manypkg/get-packages": "^1.1.3", - "@types/semver": "^7.5.0", - "ansi-colors": "^4.1.3", - "chalk": "^2.1.0", - "ci-info": "^3.7.0", - "enquirer": "^2.3.0", - "external-editor": "^3.1.0", - "fs-extra": "^7.0.1", - "human-id": "^1.0.2", - "meow": "^6.0.0", - "outdent": "^0.5.0", - "p-limit": "^2.2.0", - "preferred-pm": "^3.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.5.3", - "spawndamnit": "^2.0.0", - "term-size": "^2.1.0", - "tty-table": "^4.1.5" - }, - "bin": { - "changeset": "bin.js" - } - }, - "node_modules/@changesets/config": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@changesets/errors": "^0.2.0", - "@changesets/get-dependents-graph": "^2.0.0", - "@changesets/logger": "^0.1.0", - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3", - "fs-extra": "^7.0.1", - "micromatch": "^4.0.2" - } - }, - "node_modules/@changesets/errors": { - "version": "0.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "extendable-error": "^0.1.5" - } - }, - "node_modules/@changesets/get-dependents-graph": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3", - "chalk": "^2.1.0", - "fs-extra": "^7.0.1", - "semver": "^7.5.3" - } - }, - "node_modules/@changesets/get-release-plan": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/assemble-release-plan": "^6.0.0", - "@changesets/config": "^3.0.0", - "@changesets/pre": "^2.0.0", - "@changesets/read": "^0.6.0", - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3" - } - }, - "node_modules/@changesets/get-version-range-type": { - "version": "0.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@changesets/git": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/errors": "^0.2.0", - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3", - "is-subdir": "^1.1.1", - "micromatch": "^4.0.2", - "spawndamnit": "^2.0.0" - } - }, - "node_modules/@changesets/logger": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^2.1.0" - } - }, - "node_modules/@changesets/parse": { - "version": "0.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@changesets/types": "^6.0.0", - "js-yaml": "^3.13.1" - } - }, - "node_modules/@changesets/pre": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/errors": "^0.2.0", - "@changesets/types": "^6.0.0", - "@manypkg/get-packages": "^1.1.3", - "fs-extra": "^7.0.1" - } - }, - "node_modules/@changesets/read": { - "version": "0.6.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/git": "^3.0.0", - "@changesets/logger": "^0.1.0", - "@changesets/parse": "^0.4.0", - "@changesets/types": "^6.0.0", - "chalk": "^2.1.0", - "fs-extra": "^7.0.1", - "p-filter": "^2.1.0" - } - }, - "node_modules/@changesets/types": { - "version": "6.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@changesets/write": { - "version": "0.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/types": "^6.0.0", - "fs-extra": "^7.0.1", - "human-id": "^1.0.2", - "prettier": "^2.7.1" - } - }, - "node_modules/@manypkg/find-root": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.5.5", - "@types/node": "^12.7.1", - "find-up": "^4.1.0", - "fs-extra": "^8.1.0" - } - }, - "node_modules/@manypkg/find-root/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@manypkg/find-root/node_modules/find-up/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@manypkg/find-root/node_modules/find-up/node_modules/locate-path/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@manypkg/find-root/node_modules/fs-extra": { - "version": "8.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@manypkg/get-packages": { - "version": "1.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.5.5", - "@changesets/types": "^4.0.1", - "@manypkg/find-root": "^1.1.0", - "fs-extra": "^8.1.0", - "globby": "^11.0.0", - "read-yaml-file": "^1.1.0" - } - }, - "node_modules/@manypkg/get-packages/node_modules/@changesets/types": { - "version": "4.1.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@manypkg/get-packages/node_modules/fs-extra": { - "version": "8.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@types/minimist": { - "version": "1.2.5", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "12.20.55", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/semver": { - "version": "7.5.6", - "dev": true, - "license": "MIT" - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/argparse": { - "version": "1.0.10", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.6", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", - "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/better-path-resolve": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-windows": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/block-stream": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", - "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", - "dependencies": { - "inherits": "~2.0.0" - }, - "engines": { - "node": "0.4 || >=0.5.8" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/breakword": { - "version": "1.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "wcwidth": "^1.0.1" - } - }, - "node_modules/call-bind": { - "version": "1.0.6", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.3", - "set-function-length": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - }, - "node_modules/chalk": { - "version": "2.4.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "dev": true, - "license": "MIT" - }, - "node_modules/ci-info": { - "version": "3.9.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" - }, - "node_modules/csv": { - "version": "5.5.3", - "dev": true, - "license": "MIT", - "dependencies": { - "csv-generate": "^3.4.3", - "csv-parse": "^4.16.3", - "csv-stringify": "^5.6.5", - "stream-transform": "^2.1.3" - }, - "engines": { - "node": ">= 0.1.90" - } - }, - "node_modules/csv-generate": { - "version": "3.4.3", - "dev": true, - "license": "MIT" - }, - "node_modules/csv-parse": { - "version": "4.16.3", - "dev": true, - "license": "MIT" - }, - "node_modules/csv-stringify": { - "version": "5.6.5", - "dev": true, - "license": "MIT" - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/defaults": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-data-property": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.2", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/detect-indent": { - "version": "6.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/enquirer": { - "version": "2.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.22.3", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.5", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.2", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.2", - "has-tostringtag": "^1.0.0", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/extendable-error": { - "version": "0.1.7", - "dev": true, - "license": "MIT" - }, - "node_modules/external-editor": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" - }, - "node_modules/fastq": { - "version": "1.17.1", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-yarn-workspace-root2": { - "version": "1.2.16", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "micromatch": "^4.0.2", - "pkg-dir": "^4.2.0" - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/fs-extra": { - "version": "7.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/fstream": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", - "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", - "dependencies": { - "graceful-fs": "^4.1.2", - "inherits": "~2.0.0", - "mkdirp": ">=0.5 0", - "rimraf": "2" - }, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "5.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/globalthis": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.1.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "11.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/go-npm": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/go-npm/-/go-npm-0.1.9.tgz", - "integrity": "sha512-tuLDV8IA8ipkKmCD92PoUvJGtsCDH4HLO2VG0xkoavMj16WVaPznZSX2aW/AMXxyliIYm6J51+WC1Xse0neJDg==", - "dependencies": { - "mkdirp": "^0.5.1", - "request": "^2.81.0", - "tar": "^2.2.1" - }, - "bin": { - "go-npm": "bin/index.js" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "license": "ISC" - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "dev": true, - "license": "MIT" - }, - "node_modules/har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", - "engines": { - "node": ">=4" - } - }, - "node_modules/har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "deprecated": "this library is no longer supported", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "dev": true, - "license": "ISC" - }, - "node_modules/http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "node_modules/human-id": { - "version": "1.0.2", - "dev": true, - "license": "MIT" - }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ignore": { - "version": "5.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/internal-slot": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "dev": true, - "license": "MIT" - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-regex": { - "version": "1.1.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-string": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-subdir": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "better-path-resolve": "1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-symbol": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==" - }, - "node_modules/is-weakref": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-windows": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/isarray": { - "version": "2.0.5", - "dev": true, - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==" - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==" - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsprim": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/kleur": { - "version": "4.1.5", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "dev": true, - "license": "MIT" - }, - "node_modules/load-yaml-file": { - "version": "0.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.5", - "js-yaml": "^3.13.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash.startcase": { - "version": "4.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/lru-cache": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/map-obj": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow": { - "version": "6.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "^4.0.2", - "normalize-package-data": "^2.5.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.13.1", - "yargs-parser": "^18.1.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge2": { - "version": "1.4.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/min-indent": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minimist-options": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/mixme": { - "version": "0.5.10", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.2", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "engines": { - "node": "*" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.5", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/outdent": { - "version": "0.5.0", - "dev": true, - "license": "MIT" - }, - "node_modules/p-filter": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-map": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-json": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "dev": true, - "license": "MIT" - }, - "node_modules/path-type": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/find-up/node_modules/locate-path/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/preferred-pm": { - "version": "3.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^5.0.0", - "find-yarn-workspace-root2": "1.2.16", - "path-exists": "^4.0.0", - "which-pm": "2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prettier": { - "version": "2.8.8", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "dev": true, - "license": "ISC" - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/quick-lru": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up": { - "version": "7.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/find-up/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/find-up/node_modules/locate-path/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/read-yaml-file": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.5", - "js-yaml": "^3.6.1", - "pify": "^4.0.1", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/redent": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "dev": true, - "license": "MIT" - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "set-function-name": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/resolve": { - "version": "1.22.8", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "get-intrinsic": "^1.2.2", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "license": "MIT" - }, - "node_modules/semver": { - "version": "7.6.0", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/set-blocking": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/set-function-length": { - "version": "1.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.2", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/side-channel": { - "version": "1.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/slash": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/smartwrap": { - "version": "2.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "array.prototype.flat": "^1.2.3", - "breakword": "^1.0.5", - "grapheme-splitter": "^1.0.4", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1", - "yargs": "^15.1.0" - }, - "bin": { - "smartwrap": "src/terminal-adapter.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/smartwrap/node_modules/yargs": { - "version": "15.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/smartwrap/node_modules/yargs/node_modules/cliui": { - "version": "6.0.0", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/smartwrap/node_modules/yargs/node_modules/cliui/node_modules/wrap-ansi": { - "version": "6.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/smartwrap/node_modules/yargs/node_modules/cliui/node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/smartwrap/node_modules/yargs/node_modules/cliui/node_modules/wrap-ansi/node_modules/ansi-styles/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/smartwrap/node_modules/yargs/node_modules/cliui/node_modules/wrap-ansi/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/smartwrap/node_modules/yargs/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/smartwrap/node_modules/yargs/node_modules/find-up/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/smartwrap/node_modules/yargs/node_modules/find-up/node_modules/locate-path/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/smartwrap/node_modules/yargs/node_modules/y18n": { - "version": "4.0.3", - "dev": true, - "license": "ISC" - }, - "node_modules/spawndamnit": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "node_modules/spawndamnit/node_modules/cross-spawn": { - "version": "5.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "node_modules/spawndamnit/node_modules/cross-spawn/node_modules/lru-cache": { - "version": "4.1.5", - "dev": true, - "license": "ISC", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/spawndamnit/node_modules/cross-spawn/node_modules/lru-cache/node_modules/yallist": { - "version": "2.1.2", - "dev": true, - "license": "ISC" - }, - "node_modules/spawndamnit/node_modules/cross-spawn/node_modules/shebang-command": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/spawndamnit/node_modules/cross-spawn/node_modules/shebang-command/node_modules/shebang-regex": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/spawndamnit/node_modules/cross-spawn/node_modules/which": { - "version": "1.3.1", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/spawndamnit/node_modules/signal-exit": { - "version": "3.0.7", - "dev": true, - "license": "ISC" - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.4.0", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.17", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/sshpk": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", - "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/stream-transform": { - "version": "2.1.3", - "dev": true, - "license": "MIT", - "dependencies": { - "mixme": "^0.5.1" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.8", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.7", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-indent": { - "version": "3.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-color": { - "version": "5.5.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tar": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", - "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", - "deprecated": "This version of tar is no longer supported, and will not receive security updates. Please upgrade asap.", - "dependencies": { - "block-stream": "*", - "fstream": "^1.0.12", - "inherits": "2" - } - }, - "node_modules/term-size": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/tmp": { - "version": "0.0.33", - "dev": true, - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/tty-table": { - "version": "4.2.3", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2", - "csv": "^5.5.3", - "kleur": "^4.1.5", - "smartwrap": "^2.0.2", - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.1", - "yargs": "^17.7.1" - }, - "bin": { - "tty-table": "adapters/terminal-adapter.js" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/tty-table/node_modules/chalk": { - "version": "4.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/tty-table/node_modules/chalk/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/tty-table/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/tty-table/node_modules/chalk/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/tty-table/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tty-table/node_modules/chalk/node_modules/supports-color/node_modules/has-flag": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" - }, - "node_modules/type-fest": { - "version": "0.13.1", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "has-proto": "^1.0.1", - "is-typed-array": "^1.1.10" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "is-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/unbox-primitive": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-bigints": "^1.0.2", - "has-symbols": "^1.0.3", - "which-boxed-primitive": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.0.1", - "is-boolean-object": "^1.1.0", - "is-number-object": "^1.0.4", - "is-string": "^1.0.5", - "is-symbol": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-module": { - "version": "2.0.1", - "dev": true, - "license": "ISC" - }, - "node_modules/which-pm": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "load-yaml-file": "^0.2.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8.15" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.14", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.6", - "call-bind": "^1.0.5", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles/node_modules/color-convert": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles/node_modules/color-convert/node_modules/color-name": { - "version": "1.1.4", - "dev": true, - "license": "MIT" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/y18n": { - "version": "5.0.8", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/yargs": { - "version": "17.7.2", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "18.1.3", - "dev": true, - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.1.1", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} From ad36e92aef31dcb8d9628b425130ba19a4e50a8f Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 13:00:18 +0100 Subject: [PATCH 39/49] ignore dist file --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index cb55f60..259b207 100644 --- a/.gitignore +++ b/.gitignore @@ -175,3 +175,4 @@ dist .DS_Store dist/ +dist-npm/ From 06b2ec54b23a4b7fd264117f08ad0ff5b8621280 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 13:00:25 +0100 Subject: [PATCH 40/49] remove package.json --- package.json | 25 ------------------------- 1 file changed, 25 deletions(-) delete mode 100644 package.json diff --git a/package.json b/package.json deleted file mode 100644 index 8cef7cd..0000000 --- a/package.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "name": "@raulfdm/node-versions", - "private": false, - "publishConfig": { - "access": "public" - }, - "version": "1.1.0", - "type": "module", - "bin": { - "node-versions": "./bin/node-versions" - }, - "files": ["dist"], - "scripts": {}, - "devDependencies": { - "@changesets/cli": "2.27.1" - }, - "dependencies": { - "go-npm": "0.1.9" - }, - "goBinary": { - "name": "node-versions", - "path": "./dist", - "url": "https://github.com/raulfdm/node-versions-cli/releases/download/v{{version}}/myGoPackage_{{version}}_{{platform}}_{{arch}}.tar.gz" - } -} From d24514e269dfc94f4775cfdd3fbc703580671615 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 13:00:43 +0100 Subject: [PATCH 41/49] start scripting to generate npm package --- scripts/npm.go | 106 +++++++++++++++++++++++++++++++++ scripts/templates/package.json | 17 ++++++ 2 files changed, 123 insertions(+) create mode 100644 scripts/npm.go create mode 100644 scripts/templates/package.json diff --git a/scripts/npm.go b/scripts/npm.go new file mode 100644 index 0000000..af94579 --- /dev/null +++ b/scripts/npm.go @@ -0,0 +1,106 @@ +package main + +import ( + "bytes" + "fmt" + "os" + "path/filepath" + "strings" + "text/template" +) + +func main() { + outdir, err := getDistFolderPath() + + if err != nil { + fmt.Println("[ERROR] [getDistFolderPath] ", err) + return + } + + err = createDistFolder(outdir) + + if err != nil { + fmt.Println("[ERROR] [createDistFolder] ", err) + return + } + + pkgString, err := getPackageJsonString() + + if err != nil { + fmt.Println("[ERROR] [getPackageJsonString] ", err) + return + } + + err = writePackageJson(outdir, pkgString) + + if err != nil { + fmt.Println("[ERROR] [writePackageJson] ", err) + return + } + + fmt.Println("package.json created") +} + +type Foo struct { + Version string + URL string +} + +func getDistFolderPath() (string, error) { + fullPath, err := filepath.Abs("./") + + if err != nil { + return "", err + } + + distPath := filepath.Join(fullPath, "dist-npm") + + return distPath, nil +} + +func createDistFolder(distPath string) error { + err := os.Mkdir(distPath, 0755) + + if err != nil { + if !strings.Contains(err.Error(), "file exists") { + return err + } + } + + return nil +} + +func getPackageJsonString() (string, error) { + temp, err := template.ParseFiles("./scripts/templates/package.json") + + if err != nil { + return "", err + } + + var buff bytes.Buffer + + temp.Execute(&buff, Foo{Version: "2.0.0", + URL: `https://github.com/raulfdm/node-versions-cli/releases/download/v{{version}}/myGoPackage_{{version}}_{{platform}}_{{arch}}.tar.gz`, + }) + + result := buff.String() + + return result, nil +} + +func writePackageJson(distPath string, pkgString string) error { + file, err := os.Create(filepath.Join(distPath, "package.json")) + + if err != nil { + return err + } + defer file.Close() + + _, err = file.Write([]byte(pkgString)) + + if err != nil { + return err + } + + return nil +} diff --git a/scripts/templates/package.json b/scripts/templates/package.json new file mode 100644 index 0000000..d16ce09 --- /dev/null +++ b/scripts/templates/package.json @@ -0,0 +1,17 @@ +{ + "name": "@raulfdm/node-versions", + "private": false, + "publishConfig": { + "access": "public" + }, + "version": "{{ .Version }}", + "files": ["bin"], + "dependencies": { + "go-npm": "0.1.9" + }, + "goBinary": { + "name": "node-versions", + "path": "./bin", + "url": "{{ .URL }}" + } +} From 05be9ce73efaafa537c44883541b40757c42af2b Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 13:21:13 +0100 Subject: [PATCH 42/49] Add releaser metadata and update package.json template --- scripts/npm.go | 71 +++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 59 insertions(+), 12 deletions(-) diff --git a/scripts/npm.go b/scripts/npm.go index af94579..a71bf36 100644 --- a/scripts/npm.go +++ b/scripts/npm.go @@ -2,6 +2,7 @@ package main import ( "bytes" + "encoding/json" "fmt" "os" "path/filepath" @@ -10,28 +11,35 @@ import ( ) func main() { - outdir, err := getDistFolderPath() + outDir, err := getDistFolderPath() if err != nil { fmt.Println("[ERROR] [getDistFolderPath] ", err) return } - err = createDistFolder(outdir) + meta, err := getReleaserMetaData() + + if err != nil { + fmt.Println("[ERROR] [getReleaserMetaData] ", err) + return + } + + err = createDistFolder(outDir) if err != nil { fmt.Println("[ERROR] [createDistFolder] ", err) return } - pkgString, err := getPackageJsonString() + pkgString, err := getPackageJsonString(*meta) if err != nil { fmt.Println("[ERROR] [getPackageJsonString] ", err) return } - err = writePackageJson(outdir, pkgString) + err = writePackageJson(outDir, pkgString) if err != nil { fmt.Println("[ERROR] [writePackageJson] ", err) @@ -41,11 +49,6 @@ func main() { fmt.Println("package.json created") } -type Foo struct { - Version string - URL string -} - func getDistFolderPath() (string, error) { fullPath, err := filepath.Abs("./") @@ -70,7 +73,12 @@ func createDistFolder(distPath string) error { return nil } -func getPackageJsonString() (string, error) { +type PkgJsonTemplate struct { + Version string + URL string +} + +func getPackageJsonString(meta ReleaserMetaData) (string, error) { temp, err := template.ParseFiles("./scripts/templates/package.json") if err != nil { @@ -79,8 +87,9 @@ func getPackageJsonString() (string, error) { var buff bytes.Buffer - temp.Execute(&buff, Foo{Version: "2.0.0", - URL: `https://github.com/raulfdm/node-versions-cli/releases/download/v{{version}}/myGoPackage_{{version}}_{{platform}}_{{arch}}.tar.gz`, + temp.Execute(&buff, PkgJsonTemplate{ + Version: meta.GetVersion(), + URL: fmt.Sprintf("https://github.com/raulfdm/node-versions-cli/releases/download/v{{version}}/%s_{{version}}_{{platform}}_{{arch}}.tar.gz", meta.ProjectName), }) result := buff.String() @@ -104,3 +113,41 @@ func writePackageJson(distPath string, pkgString string) error { return nil } + +type ReleaserMetaData struct { + Tag string `json:"tag"` + ProjectName string `json:"project_name"` +} + +func (r *ReleaserMetaData) GetVersion() string { + // remove v prefix + return r.Tag[1:] +} + +func getReleaserMetaData() (*ReleaserMetaData, error) { + fullPath, err := filepath.Abs("./") + + if err != nil { + return nil, err + } + + releaserMetaPath := filepath.Join(fullPath, "dist/metadata.json") + + file, err := os.Open(releaserMetaPath) + + if err != nil { + return nil, err + } + + defer file.Close() + + var meta ReleaserMetaData + + err = json.NewDecoder(file).Decode(&meta) + + if err != nil { + return nil, err + } + + return &meta, nil +} From 4eef7e480360918520324f64e5bc10e12eec3f89 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 17:31:26 +0100 Subject: [PATCH 43/49] update package.json template --- scripts/templates/package.json | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/scripts/templates/package.json b/scripts/templates/package.json index d16ce09..6b4c502 100644 --- a/scripts/templates/package.json +++ b/scripts/templates/package.json @@ -1,13 +1,19 @@ { "name": "@raulfdm/node-versions", "private": false, + "bin": { + "node-versions": "./bin/node-versions" + }, "publishConfig": { "access": "public" }, "version": "{{ .Version }}", - "files": ["bin"], + "scripts": { + "postinstall": "node install-manager.mjs install", + "preuninstall": "node install-manager.mjs uninstall" + }, "dependencies": { - "go-npm": "0.1.9" + "tar": "6.2.0" }, "goBinary": { "name": "node-versions", From 5253259b6892fa223b042a76d337365f013ecb7e Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 17:31:36 +0100 Subject: [PATCH 44/49] add install manager script --- scripts/templates/install-manager.mjs | 224 ++++++++++++++++++++++++++ 1 file changed, 224 insertions(+) create mode 100644 scripts/templates/install-manager.mjs diff --git a/scripts/templates/install-manager.mjs b/scripts/templates/install-manager.mjs new file mode 100644 index 0000000..bc6962c --- /dev/null +++ b/scripts/templates/install-manager.mjs @@ -0,0 +1,224 @@ +#!/usr/bin/env node + +import * as path from "node:path"; +import * as fs from "node:fs"; +import https from "https"; +import tar from "tar"; +import { pipeline } from "stream/promises"; + +// Mapping from Node's `process.arch` to Golang's `$GOARCH` +const ARCH_MAPPING = { + ia32: "386", + x64: "amd64", + arm: "arm", + arm64: "arm64", +}; + +// Mapping between Node's `process.platform` to Golang's +const PLATFORM_MAPPING = { + darwin: "darwin", + linux: "linux", + win32: "windows", + freebsd: "freebsd", +}; + +const command = process.argv[2]; + +if (command === "install") { + await install(); +} else if (command === "uninstall") { + // do something +} else { + console.log( + "Invalid command. 'install' and 'uninstall' are the only supported commands", + ); + process.exit(1); +} + +async function install() { + console.log("Installing binary..."); + validateOsAndArch(); + const pkgJson = readPackageJson(); + const metaData = getMetaData(pkgJson); + createBinPath(metaData.binPath); + + try { + await downloadFile(metaData.url, metaData.binTarGz); + await tar.x({ + file: metaData.binTarGz, + cwd: metaData.binPath, + }); + + console.log("Binary installed successfully"); + } catch (error) { + console.error(`Error downloading binary: ${error}`); + process.exit(1); + } +} + +function readPackageJson() { + const packageJsonPath = path.join(".", "package.json"); + + if (!fs.existsSync(packageJsonPath)) { + console.error("package.json not found in current directory"); + process.exit(1); + } + + const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, "utf-8")); + const err = validateConfiguration(packageJson); + + if (err) { + console.error(err); + process.exit(1); + } + + return packageJson; +} + +/** + * @typedef {Object} GoBinary + * @property {(string|undefined)} path - The path of the Go binary. + * @property {(string|undefined)} name - The name of the Go binary. + * @property {(string|undefined)} url - The URL of the Go binary. + */ + +/** + * @typedef {Object} PackageJson + * @property {(GoBinary|undefined)} goBinary - The goBinary object. + * @property {string} version - The version of the package. + */ + +/** + * @typedef {Object} MetaData + * @property {string} binName - The name of the binary. + * @property {string} binPath - The path of the binary. + * @property {string} url - The URL of the binary. + * @property {string} version - The version of the binary. + */ + +/** + * Extracts metadata from a package.json object. + * + * @param {PackageJson} packageJson - The package.json object. + * + * @returns {MetaData} An object containing the binary name, path, URL, and version. + */ +function getMetaData(packageJson) { + const binPath = packageJson.goBinary.path; + let binName = packageJson.goBinary.name; + let url = packageJson.goBinary.url; + let version = packageJson.version; + + if (version[0] === "v") { + version = version.substring(1); // strip the 'v' if necessary v0.0.1 => 0.0.1 + } + + // Binary name on Windows has .exe suffix + if (process.platform === "win32") { + binName += ".exe"; + } + + // Interpolate variables in URL, if necessary + url = url.replace(/{{arch}}/g, ARCH_MAPPING[process.arch]); + url = url.replace(/{{platform}}/g, PLATFORM_MAPPING[process.platform]); + url = url.replace(/{{version}}/g, version); + url = url.replace(/{{bin_name}}/g, binName); + + return { + binName, + binPath, + binFullName: path.join(process.cwd(), binPath), + get binTarGz() { + return `${this.binFullName}.tar.gz`; + }, + url, + version, + }; +} + +function validateOsAndArch() { + if (!(process.arch in ARCH_MAPPING)) { + console.error(`Invalid architecture: ${process.arch}`); + process.exit(1); + } + + if (!(process.platform in PLATFORM_MAPPING)) { + console.error(`Invalid platform: ${process.platform} `); + process.exit(1); + } +} + +/** + * Validates the package.json object. + * @param {PackageJson} packageJson - The package.json object. + * @returns {string} An error message if the package.json object is invalid. + */ +function validateConfiguration(packageJson) { + if (!packageJson.version) { + return "'version' property must be specified"; + } + + if (!packageJson.goBinary || typeof packageJson.goBinary !== "object") { + return "'goBinary' property must be defined and be an object"; + } + + if (!packageJson.goBinary.name) { + return "'name' property is necessary"; + } + + if (!packageJson.goBinary.path) { + return "'path' property is necessary"; + } + + if (!packageJson.goBinary.url) { + return "'url' property is required"; + } +} + +/** + * Creates a directory at the specified path. + * @param {string} binPath - The path of the directory to create. + */ +function createBinPath(binPath) { + if (!fs.existsSync(binPath)) { + fs.mkdirSync(binPath, { recursive: true }); + } +} + +/** + * Downloads a file from a given URL and saves it to the specified path. + * + * @param {string} url - The URL of the file to download. + * @param {string} outputPath - The path where the downloaded file should be saved. + * @returns {Promise} A promise that resolves with the path of the downloaded file. + * @throws {Error} Throws an error if the download or file writing fails. + */ +async function downloadFile(url, outputPath) { + return new Promise((resolve, reject) => { + const processResponse = (response) => { + // Check if the response is a redirect + if ( + response.statusCode >= 300 && + response.statusCode < 400 && + response.headers.location + ) { + https + .get(response.headers.location, processResponse) + .on("error", reject); + } else if (response.statusCode === 200) { + const fileStream = fs.createWriteStream(outputPath); + pipeline(response, fileStream) + .then(() => resolve(outputPath)) + .catch((error) => { + reject(`Error during download: ${error.message}`); + }); + } else { + reject( + `Server responded with ${response.statusCode}: ${response.statusMessage}`, + ); + } + }; + + https.get(url, processResponse).on("error", reject); + }); +} From f25c6047f5047b1e304a6b9cafc0fc9d355d66d6 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 17:31:46 +0100 Subject: [PATCH 45/49] Add file copy functionality and update URL format in package.json --- scripts/npm.go | 66 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) diff --git a/scripts/npm.go b/scripts/npm.go index a71bf36..fe1ca03 100644 --- a/scripts/npm.go +++ b/scripts/npm.go @@ -4,6 +4,7 @@ import ( "bytes" "encoding/json" "fmt" + "io" "os" "path/filepath" "strings" @@ -47,6 +48,30 @@ func main() { } fmt.Println("package.json created") + + err = copyFile( + "README.md", + outDir, + "README.md", + ) + + if err != nil { + fmt.Println("[ERROR] [copy README.md] ", err) + return + } + + err = copyFile( + "./scripts/templates/go-npm.mjs", + outDir, + "go-npm.mjs", + ) + + if err != nil { + fmt.Println("[ERROR] [copy go-npm.mjs] ", err) + return + } + + fmt.Println("README.md copied") } func getDistFolderPath() (string, error) { @@ -89,7 +114,7 @@ func getPackageJsonString(meta ReleaserMetaData) (string, error) { temp.Execute(&buff, PkgJsonTemplate{ Version: meta.GetVersion(), - URL: fmt.Sprintf("https://github.com/raulfdm/node-versions-cli/releases/download/v{{version}}/%s_{{version}}_{{platform}}_{{arch}}.tar.gz", meta.ProjectName), + URL: meta.GetRemoteUrl(), }) result := buff.String() @@ -124,6 +149,10 @@ func (r *ReleaserMetaData) GetVersion() string { return r.Tag[1:] } +func (r *ReleaserMetaData) GetRemoteUrl() string { + return fmt.Sprintf("https://github.com/raulfdm/node-versions-cli/releases/download/v{{version}}/%s_{{platform}}_{{arch}}.tar.gz", r.ProjectName) +} + func getReleaserMetaData() (*ReleaserMetaData, error) { fullPath, err := filepath.Abs("./") @@ -151,3 +180,38 @@ func getReleaserMetaData() (*ReleaserMetaData, error) { return &meta, nil } + +func copyFile(relativeSrc string, outDir string, filename string) error { + fullPath, err := filepath.Abs("./") + + if err != nil { + return err + } + + readmeSrc := filepath.Join(fullPath, relativeSrc) + readmeDest := filepath.Join(outDir, filename) + + srcFile, err := os.Open(readmeSrc) + + if err != nil { + return err + } + + defer srcFile.Close() + + destFile, err := os.Create(readmeDest) + + if err != nil { + return err + } + + defer destFile.Close() + + _, err = io.Copy(destFile, srcFile) + + if err != nil { + return err + } + + return nil +} From 589c53070f5f4ee104f7f3fad7f73d693d37b41d Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 17:32:32 +0100 Subject: [PATCH 46/49] fix name --- scripts/npm.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/scripts/npm.go b/scripts/npm.go index fe1ca03..105a788 100644 --- a/scripts/npm.go +++ b/scripts/npm.go @@ -61,13 +61,13 @@ func main() { } err = copyFile( - "./scripts/templates/go-npm.mjs", + "./scripts/templates/install-manager.mjs", outDir, - "go-npm.mjs", + "install-manager.mjs", ) if err != nil { - fmt.Println("[ERROR] [copy go-npm.mjs] ", err) + fmt.Println("[ERROR] [copy install-manager.mjs] ", err) return } From 1c7938aa7469359a65ecea0ca28887209752d71a Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 18:09:30 +0100 Subject: [PATCH 47/49] Add bin.mjs and update package.json --- scripts/npm.go | 18 +++++++++++++++++- scripts/templates/bin.mjs | 20 ++++++++++++++++++++ scripts/templates/package.json | 2 +- 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 scripts/templates/bin.mjs diff --git a/scripts/npm.go b/scripts/npm.go index 105a788..87176c4 100644 --- a/scripts/npm.go +++ b/scripts/npm.go @@ -60,6 +60,8 @@ func main() { return } + fmt.Println("README.md copied") + err = copyFile( "./scripts/templates/install-manager.mjs", outDir, @@ -71,7 +73,21 @@ func main() { return } - fmt.Println("README.md copied") + fmt.Println("install-manager.mjs copied") + + err = copyFile( + "./scripts/templates/bin.mjs", + outDir, + "bin.mjs", + ) + + if err != nil { + fmt.Println("[ERROR] [copy bin.mjs] ", err) + return + } + + fmt.Println("bin.mjs copied") + } func getDistFolderPath() (string, error) { diff --git a/scripts/templates/bin.mjs b/scripts/templates/bin.mjs new file mode 100644 index 0000000..235eb9f --- /dev/null +++ b/scripts/templates/bin.mjs @@ -0,0 +1,20 @@ +#!/usr/bin/env node + +import { execSync } from "child_process"; +import { fileURLToPath } from "url"; +import path from "path"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +const fullPath = path.join(__dirname, "bin/node-versions-cli"); + +// Get the arguments passed to the script, excluding the first two elements +// The first element is the path to the node executable +// The second element is the path to your script +const args = process.argv.slice(2); + +// Join the arguments into a single string +const argsString = args.join(" "); + +execSync(`${fullPath} ${argsString}`, { stdio: "inherit" }); diff --git a/scripts/templates/package.json b/scripts/templates/package.json index 6b4c502..71f1370 100644 --- a/scripts/templates/package.json +++ b/scripts/templates/package.json @@ -2,7 +2,7 @@ "name": "@raulfdm/node-versions", "private": false, "bin": { - "node-versions": "./bin/node-versions" + "node-versions": "bin.mjs" }, "publishConfig": { "access": "public" From 18f53d56b84ca96ea0c860bb015b42d20b2c4065 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 18:19:35 +0100 Subject: [PATCH 48/49] add release to npm --- .github/workflows/release.yml | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 14a48b4..4574088 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -12,13 +12,11 @@ jobs: goreleaser: runs-on: ubuntu-latest steps: - - - name: Checkout + - name: Checkout uses: actions/checkout@v4 with: fetch-depth: 0 - - - name: Set up Go + - name: Set up Go uses: actions/setup-go@v4 with: go-version: 1.21.7 @@ -29,6 +27,21 @@ jobs: distribution: goreleaser version: latest args: release --clean + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - uses: actions/setup-node@v4 + name: Setup Node + with: + node-version: 20 + + - name: Generate NPM files + run: | + go run ./scripts/npm.go + - name: Publish to NPM + run: | + cd dist-npm + npm publish env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} \ No newline at end of file From 352ebfeff6cbd5c84c2609f4c2bcc302fd7ea2f5 Mon Sep 17 00:00:00 2001 From: Raul Melo Date: Sun, 11 Feb 2024 18:34:54 +0100 Subject: [PATCH 49/49] add npmrc --- .github/workflows/release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4574088..a5879d1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -42,6 +42,7 @@ jobs: - name: Publish to NPM run: | cd dist-npm + echo "//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}" > .npmrc npm publish env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} \ No newline at end of file