From 91fac39c7f6d2b0701dc5dbf86692c7f79b5c14f Mon Sep 17 00:00:00 2001 From: David Oduneye <44040421+DOOduneye@users.noreply.github.com> Date: Sun, 28 Apr 2024 15:14:47 -0700 Subject: [PATCH 1/8] feat: cli refactor (#682) --- CONTRIBUTING.md | 4 +- cli/.golangci.yml | 2 +- cli/cmd/db.go | 81 ++++++ cli/cmd/format.go | 131 ++++++++++ cli/cmd/lint.go | 131 ++++++++++ cli/cmd/root.go | 28 ++ cli/cmd/run.go | 95 +++++++ cli/cmd/setup.go | 19 ++ cli/cmd/swagger.go | 27 ++ cli/cmd/test.go | 143 ++++++++++ cli/commands/backend.go | 49 ---- cli/commands/format.go | 106 -------- cli/commands/frontend.go | 126 --------- cli/commands/insert.go | 90 ------- cli/commands/lint.go | 112 -------- cli/commands/swagger.go | 44 ---- cli/commands/test.go | 120 --------- cli/go.mod | 9 +- cli/go.sum | 23 +- cli/helpers/backend.go | 20 ++ cli/{commands => helpers}/config.go | 3 +- cli/{commands/db.go => helpers/database.go} | 131 +++++----- cli/helpers/execute.go | 20 ++ cli/main.go | 27 +- cli/utils/path.go | 2 +- frontend/dashboard/package.json | 2 +- frontend/lib/.eslintrc.json | 2 +- frontend/lib/.prettierrc | 14 +- frontend/lib/api/authApi.ts | 3 +- frontend/lib/api/base.ts | 5 +- frontend/lib/api/categoryApi.ts | 9 +- frontend/lib/api/clubApi.ts | 21 +- frontend/lib/api/contactApi.ts | 3 +- frontend/lib/api/eventApi.ts | 3 +- frontend/lib/api/fileApi.ts | 3 +- frontend/lib/api/pointOfContactApi.ts | 15 +- frontend/lib/api/tagApi.ts | 3 +- frontend/lib/api/userApi.ts | 3 +- frontend/lib/const.ts | 2 +- frontend/lib/package.json | 36 +-- frontend/lib/store.ts | 48 ++-- frontend/lib/tsconfig.json | 66 ++--- frontend/lib/types/contact.ts | 28 +- frontend/lib/types/error.ts | 2 +- frontend/lib/types/event.ts | 4 +- frontend/lib/types/item.ts | 4 +- frontend/lib/types/root.ts | 18 +- .../application-form-bottom-sheet.tsx | 4 +- frontend/web/.eslintrc.json | 4 +- frontend/web/app/layout.tsx | 18 +- frontend/web/app/page.tsx | 214 +++++++-------- frontend/web/package.json | 66 ++--- frontend/web/tailwind.config.ts | 30 +-- frontend/web/tsconfig.json | 76 +++--- go.work.sum | 245 ++++++++++++++++-- install_cli.sh | 34 +-- 56 files changed, 1356 insertions(+), 1172 deletions(-) create mode 100644 cli/cmd/db.go create mode 100644 cli/cmd/format.go create mode 100644 cli/cmd/lint.go create mode 100644 cli/cmd/root.go create mode 100644 cli/cmd/run.go create mode 100644 cli/cmd/setup.go create mode 100644 cli/cmd/swagger.go create mode 100644 cli/cmd/test.go delete mode 100644 cli/commands/backend.go delete mode 100644 cli/commands/format.go delete mode 100644 cli/commands/frontend.go delete mode 100644 cli/commands/insert.go delete mode 100644 cli/commands/lint.go delete mode 100644 cli/commands/swagger.go delete mode 100644 cli/commands/test.go create mode 100644 cli/helpers/backend.go rename cli/{commands => helpers}/config.go (93%) rename cli/{commands/db.go => helpers/database.go} (60%) create mode 100644 cli/helpers/execute.go mode change 100755 => 100644 cli/main.go diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d0d9886cd..d05e1d14c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -43,7 +43,7 @@ - If you get an error about `expo-cli` not being installed, run `yarn global add expo-cli` and then run `yarn install` again. ```console - cd server + cd backend go get ./... ``` @@ -119,7 +119,7 @@ To create a new migration, you can use the CLI ### SAC CLI - To install use `./scripts/install_cli.sh` and then run `sac` to see all commands. + To install use `./install_cli.sh` and then run `sac` to see all commands. # Git Flow diff --git a/cli/.golangci.yml b/cli/.golangci.yml index de5822778..d1df6cbd3 100644 --- a/cli/.golangci.yml +++ b/cli/.golangci.yml @@ -13,4 +13,4 @@ linters: linters-settings: whitespace: - multi-func: true + multi-func: true \ No newline at end of file diff --git a/cli/cmd/db.go b/cli/cmd/db.go new file mode 100644 index 000000000..001f6cc59 --- /dev/null +++ b/cli/cmd/db.go @@ -0,0 +1,81 @@ +package cmd + +import ( + "fmt" + "os" + + "github.com/GenerateNU/sac/cli/helpers" + "github.com/spf13/cobra" +) + +var dbCmd = &cobra.Command{ + Use: "database", + Aliases: []string{"db"}, + Short: "Database management commands", +} + +func init() { + rootCmd.AddCommand(dbCmd) + dbCmd.AddCommand(dbInitCmd) + dbCmd.AddCommand(dbDownCmd) + dbCmd.AddCommand(dbResetCmd) + dbCmd.AddCommand(dbInsertCmd) +} + +var dbInitCmd = &cobra.Command{ + Use: "init", + Short: "Initialize the database", + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.InitDB() + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var dbDownCmd = &cobra.Command{ + Use: "down", + Short: "Migrate down the database", + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.DownDB() + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var dbResetCmd = &cobra.Command{ + Use: "reset", + Short: "Reset the database", + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.DownDB() + if err != nil { + fmt.Println(err) + os.Exit(1) + } + + err = helpers.InitDB() + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var dbInsertCmd = &cobra.Command{ + Use: "insert", + Short: "Insert mock data into the database", + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.InsertDB() + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} diff --git a/cli/cmd/format.go b/cli/cmd/format.go new file mode 100644 index 000000000..788f5cf6a --- /dev/null +++ b/cli/cmd/format.go @@ -0,0 +1,131 @@ +package cmd + +import ( + "fmt" + "os" + "os/exec" + + "github.com/GenerateNU/sac/cli/helpers" + "github.com/spf13/cobra" +) + +var formatCmd = &cobra.Command{ + Use: "format", + Aliases: []string{"f"}, + Short: "Formatting commands", +} + +func init() { + rootCmd.AddCommand(formatCmd) + formatCmd.AddCommand(formatFrontendCmd) + formatCmd.AddCommand(formatBackendCmd) + formatCmd.AddCommand(formatCliCmd) + + formatFrontendCmd.AddCommand(formatWebCmd) + formatFrontendCmd.AddCommand(formatMobileCmd) + formatFrontendCmd.AddCommand(formatDashboardCmd) + formatFrontendCmd.AddCommand(formatLibCmd) +} + +var formatFrontendCmd = &cobra.Command{ + Use: "frontend", + Aliases: []string{"fe"}, + Short: "Frontend formatting commands", +} + +var formatWebCmd = &cobra.Command{ + Use: "web", + Aliases: []string{"w"}, + Short: "Frontend web formatting commands", + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.Execute(exec.Command("yarn", "run", "format"), helpers.WEB_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var formatMobileCmd = &cobra.Command{ + Use: "mobile", + Aliases: []string{"m"}, + Short: "Formats the frontend mobile", + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.Execute(exec.Command("yarn", "run", "format"), helpers.MOBILE_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var formatDashboardCmd = &cobra.Command{ + Use: "dashboard", + Aliases: []string{"d"}, + Short: "Formats the frontend dashboard", + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.Execute(exec.Command("yarn", "run", "format"), helpers.DASHBOARD_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var formatLibCmd = &cobra.Command{ + Use: "lib", + Aliases: []string{"l"}, + Short: "Formats the frontend lib", + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.Execute(exec.Command("yarn", "run", "format"), helpers.LIB_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var formatBackendCmd = &cobra.Command{ + Use: "backend", + Short: "Formats the backend", + Aliases: []string{"be"}, + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + _, err := exec.LookPath("gofumpt") + if err != nil { + fmt.Println("gofumpt is not installed. Please run the following command to install it:") + fmt.Println("go install mvdan.cc/gofumpt@latest") + os.Exit(1) + } + + err = helpers.Execute(exec.Command("gofumpt", "-l", "-w", "."), helpers.BACKEND_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var formatCliCmd = &cobra.Command{ + Use: "cli", + Short: "Formats the cli", + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + _, err := exec.LookPath("gofumpt") + if err != nil { + fmt.Println("gofumpt is not installed. Please run the following command to install it:") + fmt.Println("go install mvdan.cc/gofumpt@latest") + os.Exit(1) + } + + err = helpers.Execute(exec.Command("gofumpt", "-l", "-w", "."), helpers.CLI_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} diff --git a/cli/cmd/lint.go b/cli/cmd/lint.go new file mode 100644 index 000000000..b97d87078 --- /dev/null +++ b/cli/cmd/lint.go @@ -0,0 +1,131 @@ +package cmd + +import ( + "fmt" + "os" + "os/exec" + + "github.com/GenerateNU/sac/cli/helpers" + "github.com/spf13/cobra" +) + +var lintCmd = &cobra.Command{ + Use: "lint", + Aliases: []string{"l"}, + Short: "Linting commands", +} + +func init() { + rootCmd.AddCommand(lintCmd) + lintCmd.AddCommand(lintFrontendCmd) + lintCmd.AddCommand(lintBackendCmd) + lintCmd.AddCommand(lintCliCmd) + + lintFrontendCmd.AddCommand(lintWebCmd) + lintFrontendCmd.AddCommand(lintMobileCmd) + lintFrontendCmd.AddCommand(lintDashboardCmd) + lintFrontendCmd.AddCommand(lintLibCmd) +} + +var lintFrontendCmd = &cobra.Command{ + Use: "frontend", + Aliases: []string{"fe"}, + Short: "Frontend linting commands", +} + +var lintWebCmd = &cobra.Command{ + Use: "web", + Short: "Lints the frontend web", + Aliases: []string{"w"}, + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.Execute(exec.Command("yarn", "run", "lint", "--fix"), helpers.WEB_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var lintMobileCmd = &cobra.Command{ + Use: "mobile", + Short: "Lints the frontend mobile", + Aliases: []string{"m"}, + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.Execute(exec.Command("yarn", "run", "lint", "--fix"), helpers.MOBILE_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var lintDashboardCmd = &cobra.Command{ + Use: "dashboard", + Short: "Lints the frontend dashboard", + Aliases: []string{"d"}, + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.Execute(exec.Command("yarn", "run", "lint", "--fix"), helpers.DASHBOARD_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var lintLibCmd = &cobra.Command{ + Use: "lib", + Short: "Lints the lib directory", + Aliases: []string{"l"}, + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.Execute(exec.Command("yarn", "run", "lint", "--fix"), helpers.LIB_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var lintBackendCmd = &cobra.Command{ + Use: "backend", + Short: "Lints the backend", + Aliases: []string{"be"}, + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + _, err := exec.LookPath("golangci-lint") + if err != nil { + fmt.Println("golangci-lint is not installed. Please install it by running the following command:") + fmt.Println("curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.57.2") + os.Exit(1) + } + + err = helpers.Execute(exec.Command("golangci-lint", "run", "--fix"), helpers.BACKEND_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var lintCliCmd = &cobra.Command{ + Use: "cli", + Short: "Lints the CLI", + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + _, err := exec.LookPath("golangci-lint") + if err != nil { + fmt.Println("golangci-lint is not installed. Please install it by running the following command:") + fmt.Println("curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin v1.57.2") + os.Exit(1) + } + + err = helpers.Execute(exec.Command("golangci-lint", "run", "--fix"), helpers.CLI_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} diff --git a/cli/cmd/root.go b/cli/cmd/root.go new file mode 100644 index 000000000..d8c82df54 --- /dev/null +++ b/cli/cmd/root.go @@ -0,0 +1,28 @@ +/* +Copyright © 2024 NAME HERE +*/ +package cmd + +import ( + "os" + + "github.com/spf13/cobra" +) + +// rootCmd represents the base command when called without any subcommands +var rootCmd = &cobra.Command{ + Use: "sac", + Short: "SAC manages the GenerateNU Student Activity Calendar platform", + RunE: func(cmd *cobra.Command, args []string) error { + return cmd.Help() + }, +} + +// Execute adds all child commands to the root command and sets flags appropriately. +// This is called by main.main(). It only needs to happen once to the rootCmd. +func Execute() { + err := rootCmd.Execute() + if err != nil { + os.Exit(1) + } +} diff --git a/cli/cmd/run.go b/cli/cmd/run.go new file mode 100644 index 000000000..a406a99b6 --- /dev/null +++ b/cli/cmd/run.go @@ -0,0 +1,95 @@ +package cmd + +import ( + "fmt" + "os" + "os/exec" + + "github.com/GenerateNU/sac/cli/helpers" + "github.com/spf13/cobra" +) + +var runCmd = &cobra.Command{ + Use: "run", + Aliases: []string{"r"}, + Short: "Run commands", +} + +func init() { + rootCmd.AddCommand(runCmd) + runCmd.AddCommand(runFeCmd) + runCmd.AddCommand(runBeCmd) + + runFeCmd.AddCommand(runWebCmd) + runFeCmd.AddCommand(runMobileCmd) + + var platform string + runMobileCmd.Flags().StringVarP(&platform, "platform", "p", "ios", "The platform to run the mobile frontend on") + runFeCmd.AddCommand(runDashboardCmd) +} + +var runBeCmd = &cobra.Command{ + Use: "backend", + Short: "Run the backend", + Aliases: []string{"be"}, + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.Execute(exec.Command("go", "run", "main.go"), helpers.BACKEND_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var runFeCmd = &cobra.Command{ + Use: "frontend", + Short: "Frontend run commands", + Aliases: []string{"fe"}, +} + +var runWebCmd = &cobra.Command{ + Use: "web", + Short: "Run the web frontend", + Aliases: []string{"w"}, + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.Execute(exec.Command("yarn", "run", "dev"), helpers.WEB_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var runMobileCmd = &cobra.Command{ + Use: "mobile", + Short: "Run the mobile frontend", + Aliases: []string{"m"}, + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + platform, _ := cmd.Flags().GetString("platform") + + platform = "run:" + platform + + err := helpers.Execute(exec.Command("npx", "expo", platform), helpers.MOBILE_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var runDashboardCmd = &cobra.Command{ + Use: "dashboard", + Short: "Run the dashboard frontend", + Aliases: []string{"d"}, + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.Execute(exec.Command("yarn", "run", "dev"), helpers.DASHBOARD_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} diff --git a/cli/cmd/setup.go b/cli/cmd/setup.go new file mode 100644 index 000000000..e4a44624b --- /dev/null +++ b/cli/cmd/setup.go @@ -0,0 +1,19 @@ +package cmd + +import ( + "fmt" + + "github.com/spf13/cobra" +) + +var setupCmd = &cobra.Command{ + Use: "setup", + Short: "Installs and sets up the project", + Run: func(cmd *cobra.Command, args []string) { + fmt.Println("Not implemented") + }, +} + +func init() { + rootCmd.AddCommand(setupCmd) +} diff --git a/cli/cmd/swagger.go b/cli/cmd/swagger.go new file mode 100644 index 000000000..9215c8ff2 --- /dev/null +++ b/cli/cmd/swagger.go @@ -0,0 +1,27 @@ +package cmd + +import ( + "fmt" + "os" + "os/exec" + + "github.com/GenerateNU/sac/cli/helpers" + "github.com/spf13/cobra" +) + +var swagCmd = &cobra.Command{ + Use: "swagger", + Short: "Run swagger init", + Aliases: []string{"swag"}, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.Execute(exec.Command("swag", "init"), helpers.BACKEND_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +func init() { + rootCmd.AddCommand(swagCmd) +} diff --git a/cli/cmd/test.go b/cli/cmd/test.go new file mode 100644 index 000000000..ccf2d5b52 --- /dev/null +++ b/cli/cmd/test.go @@ -0,0 +1,143 @@ +package cmd + +import ( + "fmt" + "os" + "os/exec" + + "github.com/GenerateNU/sac/cli/helpers" + "github.com/spf13/cobra" +) + +var testCmd = &cobra.Command{ + Use: "test", + Aliases: []string{"t"}, + Short: "Testing commands", +} + +func init() { + rootCmd.AddCommand(testCmd) + testCmd.AddCommand(testFrontendCmd) + testCmd.AddCommand(testBackendCmd) + testCmd.AddCommand(testCliCmd) + testCmd.AddCommand(testCleanDatabaseCmd) + + testBackendCmd.Flags().BoolP("clean", "c", false, "Clean the test cache after running tests") + + testFrontendCmd.AddCommand(testWebCmd) + testFrontendCmd.AddCommand(testMobileCmd) + testFrontendCmd.AddCommand(testDashboardCmd) + testFrontendCmd.AddCommand(testLibCmd) +} + +var testFrontendCmd = &cobra.Command{ + Use: "frontend", + Aliases: []string{"fe"}, + Short: "Frontend testing commands", +} + +var testWebCmd = &cobra.Command{ + Use: "web", + Short: "Frontend web testing commands", + Aliases: []string{"w"}, + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.Execute(exec.Command("yarn", "run", "test"), helpers.WEB_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var testMobileCmd = &cobra.Command{ + Use: "mobile", + Short: "Frontend mobile testing commands", + Aliases: []string{"m"}, + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.Execute(exec.Command("yarn", "run", "test"), helpers.MOBILE_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var testDashboardCmd = &cobra.Command{ + Use: "dashboard", + Short: "Frontend dashboard testing commands", + Aliases: []string{"d"}, + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.Execute(exec.Command("yarn", "run", "test"), helpers.DASHBOARD_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var testLibCmd = &cobra.Command{ + Use: "lib", + Short: "Frontend lib testing commands", + Aliases: []string{"l"}, + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.Execute(exec.Command("yarn", "run", "test"), helpers.LIB_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var testBackendCmd = &cobra.Command{ + Use: "backend", + Short: "Backend testing commands", + Aliases: []string{"be"}, + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + clear, _ := cmd.Flags().GetBool("clean") + + err := helpers.Execute(exec.Command("go", "test", "./..."), helpers.BACKEND_DIR) + if err != nil { + fmt.Println(err) + } + + if clear { + err := helpers.CleanTestDBs() + if err != nil { + fmt.Println(err) + os.Exit(1) + } + } + }, +} + +var testCliCmd = &cobra.Command{ + Use: "cli", + Short: "CLI testing commands", + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.Execute(exec.Command("go", "test", "./..."), helpers.CLI_DIR) + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} + +var testCleanDatabaseCmd = &cobra.Command{ + Use: "clean-db", + Short: "Remove databases used for testing", + Aliases: []string{"clean"}, + Args: cobra.NoArgs, + Run: func(cmd *cobra.Command, args []string) { + err := helpers.CleanTestDBs() + if err != nil { + fmt.Println(err) + os.Exit(1) + } + }, +} diff --git a/cli/commands/backend.go b/cli/commands/backend.go deleted file mode 100644 index fff780b24..000000000 --- a/cli/commands/backend.go +++ /dev/null @@ -1,49 +0,0 @@ -package commands - -import ( - "fmt" - "os" - "os/exec" - - "github.com/urfave/cli/v2" -) - -func BackendCommand() *cli.Command { - command := &cli.Command{ - Name: "be", - Usage: "Run the backend", - Category: "Development", - Action: func(c *cli.Context) error { - err := RunBackend() - if err != nil { - return cli.Exit(err.Error(), 1) - } - - return nil - }, - } - - return command -} - -func RunBackend() error { - cmd := exec.Command("./scripts/init_db.sh") - cmd.Dir = ROOT_DIR - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - err := cmd.Run() - if err != nil { - return fmt.Errorf("error initializing database: %w", err) - } - - cmd = exec.Command("go", "run", "main.go") - - cmd.Dir = BACKEND_DIR - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - err = cmd.Run() - if err != nil { - return fmt.Errorf("error starting backend: %w", err) - } - return nil -} diff --git a/cli/commands/format.go b/cli/commands/format.go deleted file mode 100644 index abcd9673e..000000000 --- a/cli/commands/format.go +++ /dev/null @@ -1,106 +0,0 @@ -package commands - -import ( - "fmt" - "os" - "os/exec" - "slices" - - "github.com/urfave/cli/v2" -) - -func FormatCommand() *cli.Command { - command := cli.Command{ - Name: "format", - Aliases: []string{"f"}, - Usage: "Runs formatting tools", - Category: "CI", - Subcommands: []*cli.Command{ - { - Name: "frontend", - Usage: "Format the frontend", - Aliases: []string{"f"}, - Flags: []cli.Flag{ - &cli.StringFlag{ - Name: "target", - Aliases: []string{"t"}, - Value: "mobile", - Usage: "Format a specific frontend type (web or mobile)", - }, - }, - Action: func(c *cli.Context) error { - if c.Args().Len() > 0 { - return cli.Exit("Invalid arguments", 1) - } - - target := c.String("target") - if !slices.Contains(FRONTEND_CI_TARGETS, target) { - return cli.Exit("Invalid frontend type: must be 'web', 'mobile', 'dashboard', or 'lib'", 1) - } - - err := FormatFrontend(target) - if err != nil { - return cli.Exit(err.Error(), 1) - } - - return nil - }, - }, - { - Name: "backend", - Usage: "Format the backend", - Aliases: []string{"b"}, - Action: func(c *cli.Context) error { - if c.Args().Len() > 0 { - return cli.Exit("Invalid arguments", 1) - } - - err := FormatBackend() - if err != nil { - return cli.Exit(err.Error(), 1) - } - - return nil - }, - }, - }, - } - - return &command -} - -func FormatFrontend(target string) error { - dir, ok := TARGET_DIRS[target] - if !ok { - return cli.Exit("Invalid frontend type", 1) - } - - cmd := exec.Command("yarn", "run", "format") - - cmd.Dir = dir - - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - cmd.Stdin = os.Stdin - - if err := cmd.Run(); err != nil { - return err - } - - return nil -} - -func FormatBackend() error { - fmt.Println("Formatting backend") - - cmd := exec.Command("gofumpt", "-l", "-w", ".") - cmd.Dir = BACKEND_DIR - - err := cmd.Run() - if err != nil { - return cli.Exit("Failed to format backend", 1) - } - - fmt.Println("Backend formatted") - return nil -} diff --git a/cli/commands/frontend.go b/cli/commands/frontend.go deleted file mode 100644 index 41c5afb9b..000000000 --- a/cli/commands/frontend.go +++ /dev/null @@ -1,126 +0,0 @@ -package commands - -import ( - "os" - "os/exec" - "slices" - - "github.com/urfave/cli/v2" -) - -func FrontendCommand() *cli.Command { - command := cli.Command{ - Name: "fe", - Usage: "Run the frontend", - Category: "Development", - Subcommands: []*cli.Command{ - { - Name: "mobile", - Aliases: []string{"m"}, - Usage: "Run the mobile frontend", - Flags: []cli.Flag{ - &cli.StringFlag{ - Name: "platform", - Usage: "The platform to run the mobile frontend on", - Value: "ios", - }, - }, - Action: func(c *cli.Context) error { - return RunFE("mobile", c.String("platform")) - }, - }, - { - Name: "web", - Aliases: []string{"w"}, - Usage: "Run the web frontend", - Action: func(c *cli.Context) error { - return RunFE("web", "") - }, - }, - { - Name: "dashboard", - Aliases: []string{"d"}, - Usage: "Run the dashboard frontend", - Action: func(c *cli.Context) error { - return RunFE("dashboard", "") - }, - }, - }, - Action: func(c *cli.Context) error { - if c.Args().Len() > 0 { - return cli.Exit("Invalid arguments", 1) - } - - if !slices.Contains(FRONTEND_RUN_TARGETS, c.String("target")) { - return cli.Exit("Invalid frontend type: must be 'web', 'mobile', or 'dashboard'", 1) - } - - err := RunFE(c.String("type"), c.String("platform")) - if err != nil { - return cli.Exit(err.Error(), 1) - } - - return nil - }, - } - - return &command -} - -func RunFE(feType string, platform string) error { - switch feType { - case "mobile": - return RunMobileFE(platform) - case "web": - return RunWebFE() - case "dashboard": - return RunDashboardFE() - default: - return RunMobileFE(platform) - } -} - -func RunMobileFE(platform string) error { - mobileCmd := exec.Command("yarn", "run", platform) - mobileCmd.Dir = MOBILE_DIR - - mobileCmd.Stdout = os.Stdout - mobileCmd.Stderr = os.Stderr - mobileCmd.Stdin = os.Stdin - - if err := mobileCmd.Run(); err != nil { - return err - } - - return nil -} - -func RunWebFE() error { - webCmd := exec.Command("yarn", "run") - webCmd.Dir = WEB_DIR - - webCmd.Stdout = os.Stdout - webCmd.Stderr = os.Stderr - webCmd.Stdin = os.Stdin - - if err := webCmd.Run(); err != nil { - return err - } - - return nil -} - -func RunDashboardFE() error { - dashboardCmd := exec.Command("yarn", "run") - dashboardCmd.Dir = DASHBOARD_DIR - - dashboardCmd.Stdout = os.Stdout - dashboardCmd.Stderr = os.Stderr - dashboardCmd.Stdin = os.Stdin - - if err := dashboardCmd.Run(); err != nil { - return err - } - - return nil -} diff --git a/cli/commands/insert.go b/cli/commands/insert.go deleted file mode 100644 index a425c47d5..000000000 --- a/cli/commands/insert.go +++ /dev/null @@ -1,90 +0,0 @@ -package commands - -import ( - "database/sql" - "fmt" - "os" - "os/exec" - - "github.com/GenerateNU/sac/backend/config" - "github.com/lib/pq" - "github.com/urfave/cli/v2" -) - -func InsertCommand() *cli.Command { - command := cli.Command{ - Name: "insert", - Category: "Database Operations", - Aliases: []string{"i"}, - Usage: "Inserts mock data into the database", - Action: func(c *cli.Context) error { - if c.Args().Len() > 0 { - return cli.Exit("Invalid arguments", 1) - } - - err := InsertDB() - if err != nil { - return cli.Exit(err.Error(), 1) - } - - return nil - }, - } - - return &command -} - -func InsertDB() error { - config, err := config.GetConfiguration(CONFIG, false) - if err != nil { - return err - } - - db, err := sql.Open("postgres", config.Database.WithDb()) - if err != nil { - return err - } - - defer db.Close() - - var exists bool - - err = db.QueryRow("SELECT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'public' LIMIT 1);").Scan(&exists) - if err != nil { - return err - } - - if !exists { - fmt.Println("Database does not exist or has no tables. Running database migration.") - - migrateCmd := exec.Command("go", "run", "main.go", "--only-migrate") - - migrateCmd.Dir = BACKEND_DIR - - if err := migrateCmd.Run(); err != nil { - return fmt.Errorf("error running migration: %w", err) - } - } else { - fmt.Println("Database exists with tables.") - } - - migrationSQL, err := os.ReadFile(MOCK_FILE) - if err != nil { - return fmt.Errorf("error reading migration file: %w", err) - } - - _, err = db.Exec(string(migrationSQL)) - if err != nil { - if pqErr, ok := err.(*pq.Error); ok { - fmt.Println("PostgreSQL Error:") - fmt.Println("Code:", pqErr.Code) - fmt.Println("Message:", pqErr.Message) - } else { - return fmt.Errorf("error executing migration: %w", err) - } - } - - fmt.Println("Data inserted successfully.") - - return nil -} diff --git a/cli/commands/lint.go b/cli/commands/lint.go deleted file mode 100644 index bb4dcc00e..000000000 --- a/cli/commands/lint.go +++ /dev/null @@ -1,112 +0,0 @@ -package commands - -import ( - "fmt" - "os" - "os/exec" - "slices" - - "github.com/urfave/cli/v2" -) - -func LintCommand() *cli.Command { - command := cli.Command{ - Name: "lint", - Aliases: []string{"l"}, - Usage: "Runs linting tools", - Category: "CI", - Subcommands: []*cli.Command{ - { - Name: "frontend", - Usage: "Lint the frontend", - Aliases: []string{"f"}, - Flags: []cli.Flag{ - &cli.StringFlag{ - Name: "target", - Aliases: []string{"t"}, - Value: "mobile", - Usage: "Lint a specific frontend type (web or mobile)", - }, - &cli.BoolFlag{ - Name: "fix", - Aliases: []string{"f"}, - Usage: "Fix linting errors", - }, - }, - Action: func(c *cli.Context) error { - if c.Args().Len() > 0 { - return cli.Exit("Invalid arguments", 1) - } - - target := c.String("target") - if !slices.Contains(FRONTEND_CI_TARGETS, target) { - return cli.Exit("Invalid frontend type: must be 'web', 'mobile', 'dashboard', or 'lib'", 1) - } - - err := LintFrontend(target) - if err != nil { - return cli.Exit(err.Error(), 1) - } - - return nil - }, - }, - { - Name: "backend", - Usage: "Lint the backend", - Aliases: []string{"b"}, - Action: func(c *cli.Context) error { - if c.Args().Len() > 0 { - return cli.Exit("Invalid arguments", 1) - } - - err := LintBackend() - if err != nil { - return cli.Exit(err.Error(), 1) - } - - return nil - }, - }, - }, - } - - return &command -} - -func LintFrontend(target string) error { - dir, ok := TARGET_DIRS[target] - if !ok { - return cli.Exit("Invalid frontend type", 1) - } - - cmd := exec.Command("yarn", "run", "lint") - - cmd.Dir = dir - - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - cmd.Stdin = os.Stdin - - if err := cmd.Run(); err != nil { - return err - } - - return nil -} - -func LintBackend() error { - fmt.Println("Linting backend") - - cmd := exec.Command("golangci-lint", "run", "--fix") - cmd.Dir = BACKEND_DIR - - err := cmd.Run() - if err != nil { - return cli.Exit("Failed to lint backend", 1) - } - - fmt.Println("Backend linted") - - return nil -} diff --git a/cli/commands/swagger.go b/cli/commands/swagger.go deleted file mode 100644 index f830e9029..000000000 --- a/cli/commands/swagger.go +++ /dev/null @@ -1,44 +0,0 @@ -package commands - -import ( - "fmt" - "os" - "os/exec" - - "github.com/urfave/cli/v2" -) - -func SwaggerCommand() *cli.Command { - command := cli.Command{ - Name: "swagger", - Aliases: []string{"swag"}, - Usage: "Runs `swag init` to update Swagger documentation for the backend API", - Action: func(c *cli.Context) error { - cmd := exec.Command("swag", "init") - cmd.Dir = BACKEND_DIR - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - err := cmd.Run() - if err != nil { - return fmt.Errorf("error running swag init: %w", err) - } - return nil - }, - } - - return &command -} - -func Swagger() error { - cmd := exec.Command("swag", "init") - cmd.Dir = BACKEND_DIR - - out, err := cmd.CombinedOutput() - if err != nil { - fmt.Println(string(out)) - return cli.Exit("Failed to generate swagger.json", 1) - } - - fmt.Println(string(out)) - return nil -} diff --git a/cli/commands/test.go b/cli/commands/test.go deleted file mode 100644 index 8a4d2afb7..000000000 --- a/cli/commands/test.go +++ /dev/null @@ -1,120 +0,0 @@ -package commands - -import ( - "context" - "fmt" - "os/exec" - "sync" - - "github.com/urfave/cli/v2" -) - -func TestCommand() *cli.Command { - command := cli.Command{ - Name: "test", - Aliases: []string{"t"}, - Usage: "Runs tests", - Flags: []cli.Flag{ - &cli.StringFlag{ - Name: "frontend", - Aliases: []string{"f"}, - Value: "", - Usage: "Runs frontend tests", - }, - &cli.BoolFlag{ - Name: "backend", - Aliases: []string{"b"}, - Usage: "Runs backend tests", - }, - }, - Action: func(c *cli.Context) error { - if c.Args().Len() > 0 { - return cli.Exit("Invalid arguments", 1) - } - - if c.String("frontend") == "" && !c.Bool("backend") { - return cli.Exit("Must specify frontend or backend", 1) - } - - folder := c.String("frontend") - runFrontend := folder != "" - runBackend := c.Bool("backend") - err := Test(folder, runFrontend, runBackend) - if err != nil { - return cli.Exit(err.Error(), 1) - } - return nil - }, - } - return &command -} - -func Test(folder string, runFrontend bool, runBackend bool) error { - var wg sync.WaitGroup - errChan := make(chan error, 1) - var errOccurred bool // Flag to indicate whether an error has occurred - - // Start the backend if specified - if runBackend && !errOccurred { - wg.Add(1) - go func() { - defer wg.Done() - err := BackendTest() - if err != nil { - errChan <- err - errOccurred = true - } - }() - } - - // Start the frontend if specified - if runFrontend && !errOccurred { - wg.Add(1) - go func() { - defer wg.Done() - err := FrontendTest(folder) - if err != nil { - errChan <- err - errOccurred = true - } - }() - } - - go func() { - wg.Wait() - close(errChan) - }() - - for err := range errChan { - if err != nil { - return err - } - } - - return nil -} - -func BackendTest() error { - cmd := exec.Command("go", "test", "./...") - cmd.Dir = BACKEND_DIR - - out, err := cmd.CombinedOutput() - if err != nil { - fmt.Println(string(out)) - return cli.Exit("Failed to run backend tests", 1) - } - - fmt.Println(string(out)) - - err = CleanTestDBs(context.Background()) - if err != nil { - return cli.Exit(err.Error(), 1) - } - - return nil -} - -func FrontendTest(folder string) error { - fmt.Println("UNIMPLEMENTED") - return nil -} diff --git a/cli/go.mod b/cli/go.mod index f6523d4f0..699160ebc 100644 --- a/cli/go.mod +++ b/cli/go.mod @@ -3,23 +3,22 @@ module github.com/GenerateNU/sac/cli go 1.22.2 require ( - github.com/GenerateNU/sac/backend v0.0.0-20240404181341-3ce498f93df1 + github.com/GenerateNU/sac/backend v0.0.0-20240427140745-74eb4ec0f597 github.com/lib/pq v1.10.9 - github.com/urfave/cli/v2 v2.27.1 + github.com/spf13/cobra v1.8.0 ) require ( github.com/awnumar/memcall v0.2.0 // indirect github.com/awnumar/memguard v0.22.5 // indirect - github.com/cpuguy83/go-md2man/v2 v2.0.4 // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect github.com/garrettladley/mattress v0.4.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/joho/godotenv v1.5.1 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/pelletier/go-toml/v2 v2.2.0 // indirect - github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sourcegraph/conc v0.3.0 // indirect @@ -28,13 +27,11 @@ require ( github.com/spf13/pflag v1.0.5 // indirect github.com/spf13/viper v1.18.2 // indirect github.com/subosito/gotenv v1.6.0 // indirect - github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913 // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.22.0 // indirect golang.org/x/exp v0.0.0-20240404231335-c0f41cb1a7a0 // indirect golang.org/x/sys v0.19.0 // indirect golang.org/x/text v0.14.0 // indirect - gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/cli/go.sum b/cli/go.sum index 0db117ce8..acccd3ded 100644 --- a/cli/go.sum +++ b/cli/go.sum @@ -1,11 +1,10 @@ -github.com/GenerateNU/sac/backend v0.0.0-20240404181341-3ce498f93df1 h1:L7xONtx4bSb1DSXA78BQb/oEMaTp9GAtd2V2jMtaZh8= -github.com/GenerateNU/sac/backend v0.0.0-20240404181341-3ce498f93df1/go.mod h1:95WyYELbu5+MkKp2Jeqr9/MVmNjbUNjWJ+fq9TYKie8= +github.com/GenerateNU/sac/backend v0.0.0-20240427140745-74eb4ec0f597 h1:bhattf8C4aGIdJ+0L168MztGMKcznF0ZiEDhvLlHMEU= +github.com/GenerateNU/sac/backend v0.0.0-20240427140745-74eb4ec0f597/go.mod h1:VEuNTR6WQ0OQ5fjMjoRcIymCMjRLdRUM611roK9yQYQ= github.com/awnumar/memcall v0.2.0 h1:sRaogqExTOOkkNwO9pzJsL8jrOV29UuUW7teRMfbqtI= github.com/awnumar/memcall v0.2.0/go.mod h1:S911igBPR9CThzd/hYQQmTc9SWNu3ZHIlCGaWsWsoJo= github.com/awnumar/memguard v0.22.5 h1:PH7sbUVERS5DdXh3+mLo8FDcl1eIeVjJVYMnyuYpvuI= github.com/awnumar/memguard v0.22.5/go.mod h1:+APmZGThMBWjnMlKiSM1X7MVpbIVewen2MTkqWkA/zE= -github.com/cpuguy83/go-md2man/v2 v2.0.4 h1:wfIWP927BUkWJb2NmU/kNDYIBTh/ziUX91+lVfRxZq4= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= @@ -20,13 +19,12 @@ github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= @@ -42,7 +40,6 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8= github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4= -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/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= @@ -54,6 +51,8 @@ github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.18.2 h1:LUXCnvUvSM6FXAsj6nnfc8Q2tp1dIgUfY9Kc8GsSOiQ= @@ -69,10 +68,6 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8= github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= -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-20240312152122-5f08fbb34913 h1:+qGGcbkzsfDQNPPe9UDgpxAWQrhbbBXOYJFQDq/dtJw= -github.com/xrash/smetrics v0.0.0-20240312152122-5f08fbb34913/go.mod h1:4aEEwZQutDLsQv2Deui4iYQ6DWTxR14g6m8Wv88+Xqk= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= golang.org/x/crypto v0.22.0 h1:g1v0xeRhjcugydODzvb3mEM9SQ0HGp9s/nh3COQ/C30= @@ -85,8 +80,8 @@ golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= +gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/cli/helpers/backend.go b/cli/helpers/backend.go new file mode 100644 index 000000000..498042e83 --- /dev/null +++ b/cli/helpers/backend.go @@ -0,0 +1,20 @@ +package helpers + +import ( + "fmt" + "os/exec" +) + +func RunBackend() error { + err := InitDB() + if err != nil { + return fmt.Errorf("error initializing database: %w", err) + } + + err = Execute(exec.Command("go", "run", "main.go"), BACKEND_DIR) + if err != nil { + return fmt.Errorf("error running backend: %w", err) + } + + return nil +} diff --git a/cli/commands/config.go b/cli/helpers/config.go similarity index 93% rename from cli/commands/config.go rename to cli/helpers/config.go index 8a94d521d..bdcb76d36 100644 --- a/cli/commands/config.go +++ b/cli/helpers/config.go @@ -1,4 +1,4 @@ -package commands +package helpers import ( "path/filepath" @@ -14,6 +14,7 @@ var ( LIB_DIR = filepath.Join(FRONTEND_DIR, "/lib") WEB_DIR = filepath.Join(FRONTEND_DIR, "/web") BACKEND_DIR = filepath.Join(ROOT_DIR, "/backend") + CLI_DIR = filepath.Join(ROOT_DIR, "/cli") CONFIG = filepath.Join(ROOT_DIR, "/config") MIGRATIONS = filepath.Join(BACKEND_DIR, "/migrations") MOCK_FILE = filepath.Join(BACKEND_DIR, "/mock/data.sql") diff --git a/cli/commands/db.go b/cli/helpers/database.go similarity index 60% rename from cli/commands/db.go rename to cli/helpers/database.go index 2a90fbb54..85fe05c03 100644 --- a/cli/commands/db.go +++ b/cli/helpers/database.go @@ -1,7 +1,6 @@ -package commands +package helpers import ( - "context" "database/sql" "fmt" "os" @@ -10,79 +9,15 @@ import ( "sync" "github.com/GenerateNU/sac/backend/config" - _ "github.com/lib/pq" - "github.com/urfave/cli/v2" + "github.com/lib/pq" ) -func DBCommand() *cli.Command { - command := &cli.Command{ - Name: "db", - Usage: "Database management", - Subcommands: []*cli.Command{ - { - Name: "init", - Usage: "Initialize the database", - Action: func(c *cli.Context) error { - err := InitDB() - if err != nil { - return cli.Exit(err.Error(), 1) - } - - return nil - }, - }, - { - Name: "down", - Usage: "Migrate down the database", - Action: func(c *cli.Context) error { - err := DownDB() - if err != nil { - return cli.Exit(err.Error(), 1) - } - - return nil - }, - }, - { - Name: "reset", - Usage: "Reset the database", - Action: func(c *cli.Context) error { - err := DownDB() - if err != nil { - return cli.Exit(err.Error(), 1) - } - - err = InitDB() - if err != nil { - return cli.Exit(err.Error(), 1) - } - - return nil - }, - }, - { - Name: "clean-tests", - Usage: "Remove databases used for testing", - Action: func(c *cli.Context) error { - return CleanTestDBs(context.Background()) - }, - }, - }, - } - - return command -} - func InitDB() error { - cmd := exec.Command("./scripts/init_db.sh") - - cmd.Dir = ROOT_DIR - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - err := cmd.Run() + err := Execute(exec.Command("./scripts/init_db.sh"), ROOT_DIR) if err != nil { return fmt.Errorf("error initializing database: %w", err) } + return nil } @@ -102,12 +37,11 @@ func DownDB() error { if err != nil { return fmt.Errorf("error running down migrations: %w", err) } + return nil } -func CleanTestDBs(ctx context.Context) error { - fmt.Println("Cleaning test databases") - +func CleanTestDBs() error { config, err := config.GetConfiguration(CONFIG, false) if err != nil { return err @@ -166,3 +100,56 @@ func CleanTestDBs(ctx context.Context) error { return nil } + +func InsertDB() error { + config, err := config.GetConfiguration(CONFIG, false) + if err != nil { + return err + } + + db, err := sql.Open("postgres", config.Database.WithDb()) + if err != nil { + return err + } + + defer db.Close() + + var exists bool + + err = db.QueryRow("SELECT EXISTS (SELECT 1 FROM information_schema.tables WHERE table_schema = 'public' LIMIT 1);").Scan(&exists) + if err != nil { + return err + } + + if !exists { + fmt.Println("Database does not exist or has no tables. Running database migration.") + + migrateCmd := exec.Command("go", "run", "main.go", "--only-migrate") + + migrateCmd.Dir = BACKEND_DIR + + if err := migrateCmd.Run(); err != nil { + return fmt.Errorf("error running migration: %w", err) + } + } else { + fmt.Println("Database exists with tables.") + } + + migrationSQL, err := os.ReadFile(MOCK_FILE) + if err != nil { + return fmt.Errorf("error reading migration file: %w", err) + } + + _, err = db.Exec(string(migrationSQL)) + if err != nil { + if pqErr, ok := err.(*pq.Error); ok { + fmt.Println("PostgreSQL Error:") + fmt.Println("Code:", pqErr.Code) + fmt.Println("Message:", pqErr.Message) + } else { + return fmt.Errorf("error executing migration: %w", err) + } + } + + return nil +} diff --git a/cli/helpers/execute.go b/cli/helpers/execute.go new file mode 100644 index 000000000..7d43c71d4 --- /dev/null +++ b/cli/helpers/execute.go @@ -0,0 +1,20 @@ +package helpers + +import ( + "fmt" + "os" + "os/exec" +) + +func Execute(cmd *exec.Cmd, dir string) error { + cmd.Dir = dir + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + + err := cmd.Run() + if err != nil { + return fmt.Errorf("error starting %s: %w", dir, err) + } + + return nil +} diff --git a/cli/main.go b/cli/main.go old mode 100755 new mode 100644 index f5377d655..832bdaac6 --- a/cli/main.go +++ b/cli/main.go @@ -1,30 +1,7 @@ package main -import ( - "log" - "os" - - "github.com/GenerateNU/sac/cli/commands" - "github.com/urfave/cli/v2" -) +import "github.com/GenerateNU/sac/cli/cmd" func main() { - app := &cli.App{ - Name: "sac", - Usage: "CLI for the GenerateNU SAC", - Commands: []*cli.Command{ - commands.SwaggerCommand(), - commands.DBCommand(), - commands.InsertCommand(), - commands.BackendCommand(), - commands.FrontendCommand(), - commands.TestCommand(), // TODO: frontend tests - commands.FormatCommand(), - commands.LintCommand(), - }, - } - err := app.Run(os.Args) - if err != nil { - log.Fatal(err) - } + cmd.Execute() } diff --git a/cli/utils/path.go b/cli/utils/path.go index 7ff98bf94..83142047c 100644 --- a/cli/utils/path.go +++ b/cli/utils/path.go @@ -28,7 +28,7 @@ func FindRootDir(dir string) (string, error) { _, err := os.Stat(mainGoPath) if err == nil { // "sac" found, this is the root directory - return dir, nil + return filepath.Join(dir, "sac"), nil } // If not found, go up one level diff --git a/frontend/dashboard/package.json b/frontend/dashboard/package.json index 043b04ef5..f37b2d22e 100644 --- a/frontend/dashboard/package.json +++ b/frontend/dashboard/package.json @@ -34,4 +34,4 @@ "eslint-plugin-prettier": "^5.1.3", "prettier": "^3.2.4" } -} \ No newline at end of file +} diff --git a/frontend/lib/.eslintrc.json b/frontend/lib/.eslintrc.json index 83df9d1d0..be1138c28 100644 --- a/frontend/lib/.eslintrc.json +++ b/frontend/lib/.eslintrc.json @@ -1,3 +1,3 @@ { - "plugins": ["prettier"] + "plugins": ["prettier"] } diff --git a/frontend/lib/.prettierrc b/frontend/lib/.prettierrc index 35406984d..89c2e1b2f 100644 --- a/frontend/lib/.prettierrc +++ b/frontend/lib/.prettierrc @@ -1,7 +1,5 @@ { - "plugins": [ - "@trivago/prettier-plugin-sort-imports" - ], + "plugins": ["@trivago/prettier-plugin-sort-imports"], "printWidth": 80, "tabWidth": 4, "semi": true, @@ -10,13 +8,7 @@ "bracketSpacing": true, "arrowParens": "always", "endOfLine": "auto", - "importOrder": [ - "^react", - "", - "^@/", - "^src", - "^[./]" - ], + "importOrder": ["^react", "", "^@/", "^src", "^[./]"], "importOrderSeparation": true, "importOrderSortSpecifiers": true -} \ No newline at end of file +} diff --git a/frontend/lib/api/authApi.ts b/frontend/lib/api/authApi.ts index 8fd6bea54..84a79d870 100644 --- a/frontend/lib/api/authApi.ts +++ b/frontend/lib/api/authApi.ts @@ -1,4 +1,3 @@ -import { baseApi } from '../api/base'; import { LoginRequestBody, RefreshTokenRequestBody } from '@/types/auth'; import { User, userSchema } from '@/types/user'; import { @@ -7,6 +6,8 @@ import { VerifyPasswordResetTokenRequestBody } from '@/types/verification'; +import { baseApi } from '../api/base'; + const AUTH_API_BASE_URL = '/auth'; export const authApi = baseApi.injectEndpoints({ diff --git a/frontend/lib/api/base.ts b/frontend/lib/api/base.ts index 8a854b874..3a67a6d66 100644 --- a/frontend/lib/api/base.ts +++ b/frontend/lib/api/base.ts @@ -8,7 +8,8 @@ export const baseApi = createApi({ baseUrl: API_BASE_URL, credentials: 'include', prepareHeaders: async (headers, { getState }) => { - const token = (getState() as { auth: { token: string } })?.auth.token; + const token = (getState() as { auth: { token: string } })?.auth + .token; if (token) { headers.set('Authorization', `Bearer ${token}`); } @@ -42,4 +43,4 @@ export function handleQueryParams( }); } return url.toString(); -} \ No newline at end of file +} diff --git a/frontend/lib/api/categoryApi.ts b/frontend/lib/api/categoryApi.ts index 16df5653c..0a7f815f3 100644 --- a/frontend/lib/api/categoryApi.ts +++ b/frontend/lib/api/categoryApi.ts @@ -1,6 +1,5 @@ import { z } from 'zod'; -import { baseApi, handleQueryParams } from '../api/base'; import { Category, CreateCategoryRequestBody, @@ -9,6 +8,8 @@ import { import { PaginationQueryParams } from '@/types/root'; import { Tag } from '@/types/tag'; +import { baseApi, handleQueryParams } from '../api/base'; + const CATEGORY_API_BASE_URL = '/categories'; export const categoryApi = baseApi.injectEndpoints({ @@ -38,9 +39,9 @@ export const categoryApi = baseApi.injectEndpoints({ providesTags: (result, _, _arg) => result ? result.map((category) => ({ - type: 'Category', - id: category.id - })) + type: 'Category', + id: category.id + })) : ['Category'] }), category: builder.query({ diff --git a/frontend/lib/api/clubApi.ts b/frontend/lib/api/clubApi.ts index a2cf5913f..739ea1017 100644 --- a/frontend/lib/api/clubApi.ts +++ b/frontend/lib/api/clubApi.ts @@ -1,6 +1,5 @@ import { z } from 'zod'; -import { baseApi, handleQueryParams } from '../api/base'; import { Club, CreateClubRequestBody, @@ -23,6 +22,8 @@ import { PaginationQueryParams } from '@/types/root'; import { Tag, tagSchema } from '@/types/tag'; import { User, userSchema } from '@/types/user'; +import { baseApi, handleQueryParams } from '../api/base'; + export const CLUB_API_BASE_URL = '/clubs'; export const clubApi = baseApi.injectEndpoints({ @@ -92,9 +93,9 @@ export const clubApi = baseApi.injectEndpoints({ providesTags: (result, _, _arg) => result ? result.map((contact) => ({ - type: 'Contact', - id: contact.id - })) + type: 'Contact', + id: contact.id + })) : ['Contact'], transformResponse: (response: Contact) => { return z.array(contactSchema).parse(response); @@ -147,9 +148,9 @@ export const clubApi = baseApi.injectEndpoints({ providesTags: (result, _, _arg) => result ? result.map((follower) => ({ - type: 'Follower', - id: follower.id - })) + type: 'Follower', + id: follower.id + })) : ['Follower'], transformResponse: (response) => { return z.array(userSchema).parse(response); @@ -182,9 +183,9 @@ export const clubApi = baseApi.injectEndpoints({ providesTags: (result, _, _arg) => result ? result.map((poc) => ({ - type: 'PointOfContact', - id: poc.id - })) + type: 'PointOfContact', + id: poc.id + })) : ['PointOfContact'], transformResponse: (response) => { return z.array(pointOfContactSchema).parse(response); diff --git a/frontend/lib/api/contactApi.ts b/frontend/lib/api/contactApi.ts index bed6cc82c..35f4079a3 100644 --- a/frontend/lib/api/contactApi.ts +++ b/frontend/lib/api/contactApi.ts @@ -1,9 +1,10 @@ import { z } from 'zod'; -import { baseApi, handleQueryParams } from '../api/base'; import { Contact, contactSchema } from '@/types/contact'; import { PaginationQueryParams } from '@/types/root'; +import { baseApi, handleQueryParams } from '../api/base'; + const CONTACT_API_BASE_URL = '/contacts'; export const contactApi = baseApi.injectEndpoints({ diff --git a/frontend/lib/api/eventApi.ts b/frontend/lib/api/eventApi.ts index e02675ad4..7d394eac6 100644 --- a/frontend/lib/api/eventApi.ts +++ b/frontend/lib/api/eventApi.ts @@ -1,6 +1,5 @@ import { z } from 'zod'; -import { baseApi, handleQueryParams } from '../api/base'; import { Club, clubSchema } from '@/types/club'; import { CreateEventRequestBody, @@ -11,6 +10,8 @@ import { import { PaginationQueryParams } from '@/types/root'; import { Tag } from '@/types/tag'; +import { baseApi, handleQueryParams } from '../api/base'; + const EVENT_API_BASE_URL = '/events'; export const eventApi = baseApi.injectEndpoints({ diff --git a/frontend/lib/api/fileApi.ts b/frontend/lib/api/fileApi.ts index cc60a426a..f9662a28d 100644 --- a/frontend/lib/api/fileApi.ts +++ b/frontend/lib/api/fileApi.ts @@ -1,9 +1,10 @@ import { z } from 'zod'; -import { baseApi, handleQueryParams } from '../api/base'; import { File, fileSchema } from '@/types/file'; import { PaginationQueryParams } from '@/types/root'; +import { baseApi, handleQueryParams } from '../api/base'; + const FILE_API_BASE_URL = '/files'; export const fileApi = baseApi.injectEndpoints({ diff --git a/frontend/lib/api/pointOfContactApi.ts b/frontend/lib/api/pointOfContactApi.ts index cbdc670de..4bdea42cf 100644 --- a/frontend/lib/api/pointOfContactApi.ts +++ b/frontend/lib/api/pointOfContactApi.ts @@ -1,9 +1,10 @@ import { z } from 'zod'; -import { baseApi, handleQueryParams } from '../api/base'; import { PointOfContact, pointOfContactSchema } from '@/types/pointOfContact'; import { PaginationQueryParams } from '@/types/root'; +import { baseApi, handleQueryParams } from '../api/base'; + const POC_API_BASE_URL = '/pocs'; export const pointOfContactApi = baseApi.injectEndpoints({ @@ -17,9 +18,9 @@ export const pointOfContactApi = baseApi.injectEndpoints({ providesTags: (result) => result ? result.map(({ id }) => ({ - type: 'PointOfContact', - id - })) + type: 'PointOfContact', + id + })) : ['PointOfContact'], transformResponse: (response) => { return z.array(pointOfContactSchema).parse(response); @@ -40,7 +41,5 @@ export const pointOfContactApi = baseApi.injectEndpoints({ }) }); -export const { - usePointOfContactsQuery, - usePointOfContactQuery -} = pointOfContactApi; +export const { usePointOfContactsQuery, usePointOfContactQuery } = + pointOfContactApi; diff --git a/frontend/lib/api/tagApi.ts b/frontend/lib/api/tagApi.ts index 4ad7d0571..a2e056296 100644 --- a/frontend/lib/api/tagApi.ts +++ b/frontend/lib/api/tagApi.ts @@ -1,6 +1,5 @@ import { z } from 'zod'; -import { baseApi, handleQueryParams } from '../api/base'; import { PaginationQueryParams } from '@/types/root'; import { CreateTagRequestBody, @@ -9,6 +8,8 @@ import { tagSchema } from '@/types/tag'; +import { baseApi, handleQueryParams } from '../api/base'; + const TAG_API_BASE_URL = '/tags'; export const tagApi = baseApi.injectEndpoints({ diff --git a/frontend/lib/api/userApi.ts b/frontend/lib/api/userApi.ts index d6c0dc899..39399588d 100644 --- a/frontend/lib/api/userApi.ts +++ b/frontend/lib/api/userApi.ts @@ -1,6 +1,5 @@ import { z } from 'zod'; -import { baseApi, handleQueryParams } from '../api/base'; import { UpdatePasswordRequestBody } from '@/types/auth'; import { Club, clubSchema } from '@/types/club'; import { PaginationQueryParams } from '@/types/root'; @@ -13,6 +12,8 @@ import { userSchema } from '@/types/user'; +import { baseApi, handleQueryParams } from '../api/base'; + const USER_API_BASE_URL = '/users'; export const userApi = baseApi.injectEndpoints({ diff --git a/frontend/lib/const.ts b/frontend/lib/const.ts index f815b1776..75dab23f5 100644 --- a/frontend/lib/const.ts +++ b/frontend/lib/const.ts @@ -1 +1 @@ -export const API_BASE_URL = "http://127.0.0.1:8080/api/v1"; +export const API_BASE_URL = 'http://127.0.0.1:8080/api/v1'; diff --git a/frontend/lib/package.json b/frontend/lib/package.json index 8f77a4008..116e230ac 100644 --- a/frontend/lib/package.json +++ b/frontend/lib/package.json @@ -1,19 +1,19 @@ { - "name": "@sac/lib", - "main": "index.ts", - "version": "0.1.0", - "scripts": { - "test": "echo \"Woah there, we have no frontend tests as of right now. Let's just say we're passing.\" && exit 0", - "lint": "eslint . --ext .js,.jsx,.ts,.tsx --fix", - "format": "prettier --write ." - }, - "private": true, - "dependencies": { - "@reduxjs/toolkit": "^2.2.3", - "zod": "^3.23.4" - }, - "devDependencies": { - "eslint-plugin-prettier": "^5.1.3", - "prettier": "^3.2.4" - } -} \ No newline at end of file + "name": "@sac/lib", + "main": "index.ts", + "version": "0.1.0", + "scripts": { + "test": "echo \"Woah there, we have no frontend tests as of right now. Let's just say we're passing.\" && exit 0", + "lint": "eslint . --ext .js,.jsx,.ts,.tsx --fix", + "format": "prettier --write ." + }, + "private": true, + "dependencies": { + "@reduxjs/toolkit": "^2.2.3", + "zod": "^3.23.4" + }, + "devDependencies": { + "eslint-plugin-prettier": "^5.1.3", + "prettier": "^3.2.4" + } +} diff --git a/frontend/lib/store.ts b/frontend/lib/store.ts index 20244d6c0..03038174f 100644 --- a/frontend/lib/store.ts +++ b/frontend/lib/store.ts @@ -1,31 +1,31 @@ -import { clubsApi } from "./api/club"; -import { eventsApi } from "./api/event"; -import { usersApi } from "./api/user"; -import { categoriesApi } from "./api/category"; -import { contactsApi } from "./api/contact"; -import { tagsApi } from "./api/tag"; +import { configureStore } from '@reduxjs/toolkit'; +import { setupListeners } from '@reduxjs/toolkit/query'; -import { configureStore } from "@reduxjs/toolkit"; -import { setupListeners } from "@reduxjs/toolkit/query"; +import { categoriesApi } from './api/category'; +import { clubsApi } from './api/club'; +import { contactsApi } from './api/contact'; +import { eventsApi } from './api/event'; +import { tagsApi } from './api/tag'; +import { usersApi } from './api/user'; export const store = configureStore({ - reducer: { - [usersApi.reducerPath]: usersApi.reducer, - [clubsApi.reducerPath]: clubsApi.reducer, - [eventsApi.reducerPath]: eventsApi.reducer, - [categoriesApi.reducerPath]: categoriesApi.reducer, - [contactsApi.reducerPath]: contactsApi.reducer, - [tagsApi.reducerPath]: tagsApi.reducer, - }, + reducer: { + [usersApi.reducerPath]: usersApi.reducer, + [clubsApi.reducerPath]: clubsApi.reducer, + [eventsApi.reducerPath]: eventsApi.reducer, + [categoriesApi.reducerPath]: categoriesApi.reducer, + [contactsApi.reducerPath]: contactsApi.reducer, + [tagsApi.reducerPath]: tagsApi.reducer + }, - middleware: (getDefaultMiddleware) => - getDefaultMiddleware() - .concat(usersApi.middleware) - .concat(clubsApi.middleware) - .concat(eventsApi.middleware) - .concat(categoriesApi.middleware) - .concat(contactsApi.middleware) - .concat(tagsApi.middleware), + middleware: (getDefaultMiddleware) => + getDefaultMiddleware() + .concat(usersApi.middleware) + .concat(clubsApi.middleware) + .concat(eventsApi.middleware) + .concat(categoriesApi.middleware) + .concat(contactsApi.middleware) + .concat(tagsApi.middleware) }); setupListeners(store.dispatch); diff --git a/frontend/lib/tsconfig.json b/frontend/lib/tsconfig.json index 0e8551026..4998af8a0 100644 --- a/frontend/lib/tsconfig.json +++ b/frontend/lib/tsconfig.json @@ -1,40 +1,28 @@ { - "compilerOptions": { - "target": "es5", - "lib": [ - "dom", - "dom.iterable", - "esnext" - ], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "noEmit": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "bundler", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true, - "plugins": [ - { - "name": "next" - } - ], - "baseUrl": ".", - "paths": { - "@/*": [ - "./*" - ] - } - }, - "include": [ - "**/*.ts", - "**/*.tsx", - "types/index.ts" - ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "baseUrl": ".", + "paths": { + "@/*": ["./*"] + } + }, + "include": ["**/*.ts", "**/*.tsx", "types/index.ts"], + "exclude": ["node_modules"] +} diff --git a/frontend/lib/types/contact.ts b/frontend/lib/types/contact.ts index cac0b8c41..664284e93 100644 --- a/frontend/lib/types/contact.ts +++ b/frontend/lib/types/contact.ts @@ -4,30 +4,30 @@ import { rootModelSchema } from './root'; // Enums: const contactTypeEnum = z.enum([ - 'facebook', - 'instagram', - 'x', - 'linkedin', - 'youtube', - 'github', - 'slack', - 'discord', - 'email', - 'customSite' + 'facebook', + 'instagram', + 'x', + 'linkedin', + 'youtube', + 'github', + 'slack', + 'discord', + 'email', + 'customSite' ]); // Schemas: export const createContactRequestBodySchema = z.object({ - type: contactTypeEnum, - content: z.string().max(255) + type: contactTypeEnum, + content: z.string().max(255) }); export const contactSchema = - createContactRequestBodySchema.merge(rootModelSchema); + createContactRequestBodySchema.merge(rootModelSchema); // Types: export type ContactType = z.infer; export type CreateContactRequestBody = z.infer< - typeof createContactRequestBodySchema + typeof createContactRequestBodySchema >; export type Contact = z.infer; diff --git a/frontend/lib/types/error.ts b/frontend/lib/types/error.ts index 6bfb33c7d..aa50e46ac 100644 --- a/frontend/lib/types/error.ts +++ b/frontend/lib/types/error.ts @@ -1,3 +1,3 @@ export type ErrorResponse = { - error: string; + error: string; }; diff --git a/frontend/lib/types/event.ts b/frontend/lib/types/event.ts index da3d2c40c..515066238 100644 --- a/frontend/lib/types/event.ts +++ b/frontend/lib/types/event.ts @@ -1,6 +1,6 @@ -import { z } from "zod"; +import { z } from 'zod'; -import { rootModelSchema } from "./root"; +import { rootModelSchema } from './root'; /** * TODO: Re-Write After BE Fixes diff --git a/frontend/lib/types/item.ts b/frontend/lib/types/item.ts index 8cef04537..763910602 100644 --- a/frontend/lib/types/item.ts +++ b/frontend/lib/types/item.ts @@ -1,4 +1,4 @@ export type Item = { - label: string; - value: string; + label: string; + value: string; }; diff --git a/frontend/lib/types/root.ts b/frontend/lib/types/root.ts index c1011ade2..27c0ee4c0 100644 --- a/frontend/lib/types/root.ts +++ b/frontend/lib/types/root.ts @@ -1,16 +1,18 @@ -import { z } from "zod"; +import { z } from 'zod'; export type uuid = string; export const rootModelSchema = z.object({ - id: z.string().uuid(), - created_at: z.date(), - updated_at: z.date(), + id: z.string().uuid(), + created_at: z.date(), + updated_at: z.date() }); -const paginationQueryParams = z.object({ - page: z.number().int().positive().optional(), - limit: z.number().int().positive().optional() -}).optional(); +const paginationQueryParams = z + .object({ + page: z.number().int().positive().optional(), + limit: z.number().int().positive().optional() + }) + .optional(); export type PaginationQueryParams = z.infer; diff --git a/frontend/mobile/app/(app)/club/_components/application-form-bottom-sheet.tsx b/frontend/mobile/app/(app)/club/_components/application-form-bottom-sheet.tsx index 96be5f886..742ff4829 100644 --- a/frontend/mobile/app/(app)/club/_components/application-form-bottom-sheet.tsx +++ b/frontend/mobile/app/(app)/club/_components/application-form-bottom-sheet.tsx @@ -59,7 +59,7 @@ const ApplyBottomSheet = forwardRef((_, ref) => { backdropComponent={renderBackdrop} > - + Application Form @@ -88,7 +88,7 @@ const ApplyBottomSheet = forwardRef((_, ref) => { diff --git a/frontend/web/.eslintrc.json b/frontend/web/.eslintrc.json index 0e81f9b97..1c2aa65d7 100644 --- a/frontend/web/.eslintrc.json +++ b/frontend/web/.eslintrc.json @@ -1,3 +1,3 @@ { - "extends": "next/core-web-vitals" -} \ No newline at end of file + "extends": "next/core-web-vitals" +} diff --git a/frontend/web/app/layout.tsx b/frontend/web/app/layout.tsx index 27fc939be..02173d1e6 100644 --- a/frontend/web/app/layout.tsx +++ b/frontend/web/app/layout.tsx @@ -6,18 +6,18 @@ import './globals.css'; const inter = Inter({ subsets: ['latin'] }); export const metadata: Metadata = { - title: 'Create Next App', - description: 'Generated by create next app' + title: 'Create Next App', + description: 'Generated by create next app' }; export default function RootLayout({ - children + children }: { - children: React.ReactNode; + children: React.ReactNode; }) { - return ( - - {children} - - ); + return ( + + {children} + + ); } diff --git a/frontend/web/app/page.tsx b/frontend/web/app/page.tsx index 94c3b7eb8..efa05486a 100644 --- a/frontend/web/app/page.tsx +++ b/frontend/web/app/page.tsx @@ -1,116 +1,116 @@ import Image from 'next/image'; export default function Home() { - return ( -
-
-

- Get started by editing  - app/page.tsx -

- -
+ return ( +
+
+

+ Get started by editing  + app/page.tsx +

+ +
-
- Next.js Logo -
+
+ Next.js Logo +
-
- ); + +

+ Deploy{' '} + + -> + +

+

+ Instantly deploy your Next.js site to a shareable URL + with Vercel. +

+
+ +
+ ); } diff --git a/frontend/web/package.json b/frontend/web/package.json index 798b62c43..69ca8e81d 100644 --- a/frontend/web/package.json +++ b/frontend/web/package.json @@ -1,34 +1,34 @@ { - "name": "@sac/web", - "version": "0.1.0", - "private": true, - "scripts": { - "dev": "next dev", - "build": "next build", - "start": "next start", - "test": "echo \"Woah there, we have no frontend tests as of right now. Let's just say we're passing.\" && exit 0", - "lint": "next lint", - "lint:fix": "next lint --fix", - "format": "prettier --write ." - }, - "dependencies": { - "@sac/lib": "*", - "next": "14.2.3", - "react": "^18", - "react-dom": "^18", - "semver": "7.6.0" - }, - "devDependencies": { - "@types/node": "^20", - "@types/react": "^18", - "@types/react-dom": "^18", - "autoprefixer": "^10.4.19", - "eslint": "^8", - "eslint-config-next": "14.2.3", - "jest": "^29.2.1", - "postcss": "^8", - "prettier": "^3.2.4", - "tailwindcss": "^3.4.3", - "typescript": "^5" - } -} \ No newline at end of file + "name": "@sac/web", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev", + "build": "next build", + "start": "next start", + "test": "echo \"Woah there, we have no frontend tests as of right now. Let's just say we're passing.\" && exit 0", + "lint": "next lint", + "lint:fix": "next lint --fix", + "format": "prettier --write ." + }, + "dependencies": { + "@sac/lib": "*", + "next": "14.2.3", + "react": "^18", + "react-dom": "^18", + "semver": "7.6.0" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "autoprefixer": "^10.4.19", + "eslint": "^8", + "eslint-config-next": "14.2.3", + "jest": "^29.2.1", + "postcss": "^8", + "prettier": "^3.2.4", + "tailwindcss": "^3.4.3", + "typescript": "^5" + } +} diff --git a/frontend/web/tailwind.config.ts b/frontend/web/tailwind.config.ts index 6299298c1..bfcc856ab 100644 --- a/frontend/web/tailwind.config.ts +++ b/frontend/web/tailwind.config.ts @@ -1,20 +1,20 @@ import type { Config } from 'tailwindcss'; const config: Config = { - content: [ - './pages/**/*.{js,ts,jsx,tsx,mdx}', - './components/**/*.{js,ts,jsx,tsx,mdx}', - './app/**/*.{js,ts,jsx,tsx,mdx}' - ], - theme: { - extend: { - backgroundImage: { - 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', - 'gradient-conic': - 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))' - } - } - }, - plugins: [] + content: [ + './pages/**/*.{js,ts,jsx,tsx,mdx}', + './components/**/*.{js,ts,jsx,tsx,mdx}', + './app/**/*.{js,ts,jsx,tsx,mdx}' + ], + theme: { + extend: { + backgroundImage: { + 'gradient-radial': 'radial-gradient(var(--tw-gradient-stops))', + 'gradient-conic': + 'conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))' + } + } + }, + plugins: [] }; export default config; diff --git a/frontend/web/tsconfig.json b/frontend/web/tsconfig.json index 24da1a7f5..3db9ddd9e 100644 --- a/frontend/web/tsconfig.json +++ b/frontend/web/tsconfig.json @@ -1,44 +1,36 @@ { - "compilerOptions": { - "target": "es5", - "lib": [ - "dom", - "dom.iterable", - "esnext" + "compilerOptions": { + "target": "es5", + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next" + } + ], + "baseUrl": ".", + "paths": { + "@/*": ["./*"] + } + }, + "include": [ + ".eslintrc.cjs", + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + "**/*.cjs", + "**/*.js", + ".next/types/**/*.ts" ], - "allowJs": true, - "skipLibCheck": true, - "strict": true, - "noEmit": true, - "esModuleInterop": true, - "module": "esnext", - "moduleResolution": "bundler", - "resolveJsonModule": true, - "isolatedModules": true, - "jsx": "preserve", - "incremental": true, - "plugins": [ - { - "name": "next" - } - ], - "baseUrl": ".", - "paths": { - "@/*": [ - "./*" - ] - } - }, - "include": [ - ".eslintrc.cjs", - "next-env.d.ts", - "**/*.ts", - "**/*.tsx", - "**/*.cjs", - "**/*.js", - ".next/types/**/*.ts" - ], - "exclude": [ - "node_modules" - ] -} \ No newline at end of file + "exclude": ["node_modules"] +} diff --git a/go.work.sum b/go.work.sum index 5cc0f4cc2..d11da3f9e 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1,17 +1,137 @@ +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= +cloud.google.com/go/accessapproval v1.7.4/go.mod h1:/aTEh45LzplQgFYdQdwPMR9YdX0UlhBmvB84uAmQKUc= +cloud.google.com/go/accesscontextmanager v1.8.4/go.mod h1:ParU+WbMpD34s5JFEnGAnPBYAgUHozaTmDJU7aCU9+M= +cloud.google.com/go/aiplatform v1.52.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU= +cloud.google.com/go/analytics v0.21.6/go.mod h1:eiROFQKosh4hMaNhF85Oc9WO97Cpa7RggD40e/RBy8w= +cloud.google.com/go/apigateway v1.6.4/go.mod h1:0EpJlVGH5HwAN4VF4Iec8TAzGN1aQgbxAWGJsnPCGGY= +cloud.google.com/go/apigeeconnect v1.6.4/go.mod h1:CapQCWZ8TCjnU0d7PobxhpOdVz/OVJ2Hr/Zcuu1xFx0= +cloud.google.com/go/apigeeregistry v0.8.2/go.mod h1:h4v11TDGdeXJDJvImtgK2AFVvMIgGWjSb0HRnBSjcX8= +cloud.google.com/go/appengine v1.8.4/go.mod h1:TZ24v+wXBujtkK77CXCpjZbnuTvsFNT41MUaZ28D6vg= +cloud.google.com/go/area120 v0.8.4/go.mod h1:jfawXjxf29wyBXr48+W+GyX/f8fflxp642D/bb9v68M= +cloud.google.com/go/artifactregistry v1.14.6/go.mod h1:np9LSFotNWHcjnOgh8UVK0RFPCTUGbO0ve3384xyHfE= +cloud.google.com/go/asset v1.15.3/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU= +cloud.google.com/go/assuredworkloads v1.11.4/go.mod h1:4pwwGNwy1RP0m+y12ef3Q/8PaiWrIDQ6nD2E8kvWI9U= +cloud.google.com/go/automl v1.13.4/go.mod h1:ULqwX/OLZ4hBVfKQaMtxMSTlPx0GqGbWN8uA/1EqCP8= +cloud.google.com/go/baremetalsolution v1.2.3/go.mod h1:/UAQ5xG3faDdy180rCUv47e0jvpp3BFxT+Cl0PFjw5g= +cloud.google.com/go/batch v1.6.3/go.mod h1:J64gD4vsNSA2O5TtDB5AAux3nJ9iV8U3ilg3JDBYejU= +cloud.google.com/go/beyondcorp v1.0.3/go.mod h1:HcBvnEd7eYr+HGDd5ZbuVmBYX019C6CEXBonXbCVwJo= +cloud.google.com/go/bigquery v1.57.1/go.mod h1:iYzC0tGVWt1jqSzBHqCr3lrRn0u13E8e+AqowBsDgug= +cloud.google.com/go/billing v1.17.4/go.mod h1:5DOYQStCxquGprqfuid/7haD7th74kyMBHkjO/OvDtk= +cloud.google.com/go/binaryauthorization v1.7.3/go.mod h1:VQ/nUGRKhrStlGr+8GMS8f6/vznYLkdK5vaKfdCIpvU= +cloud.google.com/go/certificatemanager v1.7.4/go.mod h1:FHAylPe/6IIKuaRmHbjbdLhGhVQ+CWHSD5Jq0k4+cCE= +cloud.google.com/go/channel v1.17.3/go.mod h1:QcEBuZLGGrUMm7kNj9IbU1ZfmJq2apotsV83hbxX7eE= +cloud.google.com/go/cloudbuild v1.14.3/go.mod h1:eIXYWmRt3UtggLnFGx4JvXcMj4kShhVzGndL1LwleEM= +cloud.google.com/go/clouddms v1.7.3/go.mod h1:fkN2HQQNUYInAU3NQ3vRLkV2iWs8lIdmBKOx4nrL6Hc= +cloud.google.com/go/cloudtasks v1.12.4/go.mod h1:BEPu0Gtt2dU6FxZHNqqNdGqIG86qyWKBPGnsb7udGY0= +cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78= cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= +cloud.google.com/go/contactcenterinsights v1.11.3/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis= +cloud.google.com/go/container v1.27.1/go.mod h1:b1A1gJeTBXVLQ6GGw9/9M4FG94BEGsqJ5+t4d/3N7O4= +cloud.google.com/go/containeranalysis v0.11.3/go.mod h1:kMeST7yWFQMGjiG9K7Eov+fPNQcGhb8mXj/UcTiWw9U= +cloud.google.com/go/datacatalog v1.18.3/go.mod h1:5FR6ZIF8RZrtml0VUao22FxhdjkoG+a0866rEnObryM= +cloud.google.com/go/dataflow v0.9.4/go.mod h1:4G8vAkHYCSzU8b/kmsoR2lWyHJD85oMJPHMtan40K8w= +cloud.google.com/go/dataform v0.9.1/go.mod h1:pWTg+zGQ7i16pyn0bS1ruqIE91SdL2FDMvEYu/8oQxs= +cloud.google.com/go/datafusion v1.7.4/go.mod h1:BBs78WTOLYkT4GVZIXQCZT3GFpkpDN4aBY4NDX/jVlM= +cloud.google.com/go/datalabeling v0.8.4/go.mod h1:Z1z3E6LHtffBGrNUkKwbwbDxTiXEApLzIgmymj8A3S8= +cloud.google.com/go/dataplex v1.11.1/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c= +cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= +cloud.google.com/go/dataproc/v2 v2.2.3/go.mod h1:G5R6GBc9r36SXv/RtZIVfB8SipI+xVn0bX5SxUzVYbY= +cloud.google.com/go/dataqna v0.8.4/go.mod h1:mySRKjKg5Lz784P6sCov3p1QD+RZQONRMRjzGNcFd0c= +cloud.google.com/go/datastore v1.15.0/go.mod h1:GAeStMBIt9bPS7jMJA85kgkpsMkvseWWXiaHya9Jes8= +cloud.google.com/go/datastream v1.10.3/go.mod h1:YR0USzgjhqA/Id0Ycu1VvZe8hEWwrkjuXrGbzeDOSEA= +cloud.google.com/go/deploy v1.14.2/go.mod h1:e5XOUI5D+YGldyLNZ21wbp9S8otJbBE4i88PtO9x/2g= +cloud.google.com/go/dialogflow v1.44.3/go.mod h1:mHly4vU7cPXVweuB5R0zsYKPMzy240aQdAu06SqBbAQ= +cloud.google.com/go/dlp v1.11.1/go.mod h1:/PA2EnioBeXTL/0hInwgj0rfsQb3lpE3R8XUJxqUNKI= +cloud.google.com/go/documentai v1.23.5/go.mod h1:ghzBsyVTiVdkfKaUCum/9bGBEyBjDO4GfooEcYKhN+g= +cloud.google.com/go/domains v0.9.4/go.mod h1:27jmJGShuXYdUNjyDG0SodTfT5RwLi7xmH334Gvi3fY= +cloud.google.com/go/edgecontainer v1.1.4/go.mod h1:AvFdVuZuVGdgaE5YvlL1faAoa1ndRR/5XhXZvPBHbsE= +cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= +cloud.google.com/go/essentialcontacts v1.6.5/go.mod h1:jjYbPzw0x+yglXC890l6ECJWdYeZ5dlYACTFL0U/VuM= +cloud.google.com/go/eventarc v1.13.3/go.mod h1:RWH10IAZIRcj1s/vClXkBgMHwh59ts7hSWcqD3kaclg= +cloud.google.com/go/filestore v1.7.4/go.mod h1:S5JCxIbFjeBhWMTfIYH2Jx24J6BqjwpkkPl+nBA5DlI= cloud.google.com/go/firestore v1.14.0/go.mod h1:96MVaHLsEhbvkBEdZgfN+AS/GIkco1LRpH9Xp9YZfzQ= +cloud.google.com/go/functions v1.15.4/go.mod h1:CAsTc3VlRMVvx+XqXxKqVevguqJpnVip4DdonFsX28I= +cloud.google.com/go/gkebackup v1.3.4/go.mod h1:gLVlbM8h/nHIs09ns1qx3q3eaXcGSELgNu1DWXYz1HI= +cloud.google.com/go/gkeconnect v0.8.4/go.mod h1:84hZz4UMlDCKl8ifVW8layK4WHlMAFeq8vbzjU0yJkw= +cloud.google.com/go/gkehub v0.14.4/go.mod h1:Xispfu2MqnnFt8rV/2/3o73SK1snL8s9dYJ9G2oQMfc= +cloud.google.com/go/gkemulticloud v1.0.3/go.mod h1:7NpJBN94U6DY1xHIbsDqB2+TFZUfjLUKLjUX8NGLor0= +cloud.google.com/go/grafeas v0.3.0/go.mod h1:P7hgN24EyONOTMyeJH6DxG4zD7fwiYa5Q6GUgyFSOU8= +cloud.google.com/go/gsuiteaddons v1.6.4/go.mod h1:rxtstw7Fx22uLOXBpsvb9DUbC+fiXs7rF4U29KHM/pE= +cloud.google.com/go/iam v1.1.1/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= +cloud.google.com/go/iam v1.1.3/go.mod h1:3khUlaBXfPKKe7huYgEpDn6FtgRyMEqbkvBxrQyY5SE= cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= +cloud.google.com/go/iap v1.9.3/go.mod h1:DTdutSZBqkkOm2HEOTBzhZxh2mwwxshfD/h3yofAiCw= +cloud.google.com/go/ids v1.4.4/go.mod h1:z+WUc2eEl6S/1aZWzwtVNWoSZslgzPxAboS0lZX0HjI= +cloud.google.com/go/iot v1.7.4/go.mod h1:3TWqDVvsddYBG++nHSZmluoCAVGr1hAcabbWZNKEZLk= +cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI= +cloud.google.com/go/language v1.12.2/go.mod h1:9idWapzr/JKXBBQ4lWqVX/hcadxB194ry20m/bTrhWc= +cloud.google.com/go/lifesciences v0.9.4/go.mod h1:bhm64duKhMi7s9jR9WYJYvjAFJwRqNj+Nia7hF0Z7JA= +cloud.google.com/go/logging v1.8.1/go.mod h1:TJjR+SimHwuC8MZ9cjByQulAMgni+RkXeI3wwctHJEI= +cloud.google.com/go/longrunning v0.5.2/go.mod h1:nqo6DQbNV2pXhGDbDMoN2bWz68MjZUzqv2YttZiveCs= cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI= +cloud.google.com/go/managedidentities v1.6.4/go.mod h1:WgyaECfHmF00t/1Uk8Oun3CQ2PGUtjc3e9Alh79wyiM= +cloud.google.com/go/maps v1.6.1/go.mod h1:4+buOHhYXFBp58Zj/K+Lc1rCmJssxxF4pJ5CJnhdz18= +cloud.google.com/go/mediatranslation v0.8.4/go.mod h1:9WstgtNVAdN53m6TQa5GjIjLqKQPXe74hwSCxUP6nj4= +cloud.google.com/go/memcache v1.10.4/go.mod h1:v/d8PuC8d1gD6Yn5+I3INzLR01IDn0N4Ym56RgikSI0= +cloud.google.com/go/metastore v1.13.3/go.mod h1:K+wdjXdtkdk7AQg4+sXS8bRrQa9gcOr+foOMF2tqINE= +cloud.google.com/go/monitoring v1.16.3/go.mod h1:KwSsX5+8PnXv5NJnICZzW2R8pWTis8ypC4zmdRD63Tw= +cloud.google.com/go/networkconnectivity v1.14.3/go.mod h1:4aoeFdrJpYEXNvrnfyD5kIzs8YtHg945Og4koAjHQek= +cloud.google.com/go/networkmanagement v1.9.3/go.mod h1:y7WMO1bRLaP5h3Obm4tey+NquUvB93Co1oh4wpL+XcU= +cloud.google.com/go/networksecurity v0.9.4/go.mod h1:E9CeMZ2zDsNBkr8axKSYm8XyTqNhiCHf1JO/Vb8mD1w= +cloud.google.com/go/notebooks v1.11.2/go.mod h1:z0tlHI/lREXC8BS2mIsUeR3agM1AkgLiS+Isov3SS70= +cloud.google.com/go/optimization v1.6.2/go.mod h1:mWNZ7B9/EyMCcwNl1frUGEuY6CPijSkz88Fz2vwKPOY= +cloud.google.com/go/orchestration v1.8.4/go.mod h1:d0lywZSVYtIoSZXb0iFjv9SaL13PGyVOKDxqGxEf/qI= +cloud.google.com/go/orgpolicy v1.11.4/go.mod h1:0+aNV/nrfoTQ4Mytv+Aw+stBDBjNf4d8fYRA9herfJI= +cloud.google.com/go/osconfig v1.12.4/go.mod h1:B1qEwJ/jzqSRslvdOCI8Kdnp0gSng0xW4LOnIebQomA= +cloud.google.com/go/oslogin v1.12.2/go.mod h1:CQ3V8Jvw4Qo4WRhNPF0o+HAM4DiLuE27Ul9CX9g2QdY= +cloud.google.com/go/phishingprotection v0.8.4/go.mod h1:6b3kNPAc2AQ6jZfFHioZKg9MQNybDg4ixFd4RPZZ2nE= +cloud.google.com/go/policytroubleshooter v1.10.2/go.mod h1:m4uF3f6LseVEnMV6nknlN2vYGRb+75ylQwJdnOXfnv0= +cloud.google.com/go/privatecatalog v0.9.4/go.mod h1:SOjm93f+5hp/U3PqMZAHTtBtluqLygrDrVO8X8tYtG0= +cloud.google.com/go/pubsub v1.33.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= +cloud.google.com/go/pubsublite v1.8.1/go.mod h1:fOLdU4f5xldK4RGJrBMm+J7zMWNj/k4PxwEZXy39QS0= +cloud.google.com/go/recaptchaenterprise/v2 v2.8.3/go.mod h1:Dak54rw6lC2gBY8FBznpOCAR58wKf+R+ZSJRoeJok4w= +cloud.google.com/go/recommendationengine v0.8.4/go.mod h1:GEteCf1PATl5v5ZsQ60sTClUE0phbWmo3rQ1Js8louU= +cloud.google.com/go/recommender v1.11.3/go.mod h1:+FJosKKJSId1MBFeJ/TTyoGQZiEelQQIZMKYYD8ruK4= +cloud.google.com/go/redis v1.14.1/go.mod h1:MbmBxN8bEnQI4doZPC1BzADU4HGocHBk2de3SbgOkqs= +cloud.google.com/go/resourcemanager v1.9.4/go.mod h1:N1dhP9RFvo3lUfwtfLWVxfUWq8+KUQ+XLlHLH3BoFJ0= +cloud.google.com/go/resourcesettings v1.6.4/go.mod h1:pYTTkWdv2lmQcjsthbZLNBP4QW140cs7wqA3DuqErVI= +cloud.google.com/go/retail v1.14.4/go.mod h1:l/N7cMtY78yRnJqp5JW8emy7MB1nz8E4t2yfOmklYfg= +cloud.google.com/go/run v1.3.3/go.mod h1:WSM5pGyJ7cfYyYbONVQBN4buz42zFqwG67Q3ch07iK4= +cloud.google.com/go/scheduler v1.10.4/go.mod h1:MTuXcrJC9tqOHhixdbHDFSIuh7xZF2IysiINDuiq6NI= +cloud.google.com/go/secretmanager v1.11.4/go.mod h1:wreJlbS9Zdq21lMzWmJ0XhWW2ZxgPeahsqeV/vZoJ3w= +cloud.google.com/go/security v1.15.4/go.mod h1:oN7C2uIZKhxCLiAAijKUCuHLZbIt/ghYEo8MqwD/Ty4= +cloud.google.com/go/securitycenter v1.24.2/go.mod h1:l1XejOngggzqwr4Fa2Cn+iWZGf+aBLTXtB/vXjy5vXM= +cloud.google.com/go/servicedirectory v1.11.3/go.mod h1:LV+cHkomRLr67YoQy3Xq2tUXBGOs5z5bPofdq7qtiAw= +cloud.google.com/go/shell v1.7.4/go.mod h1:yLeXB8eKLxw0dpEmXQ/FjriYrBijNsONpwnWsdPqlKM= cloud.google.com/go/spanner v1.51.0/go.mod h1:c5KNo5LQ1X5tJwma9rSQZsXNBDNvj4/n8BVc3LNahq0= +cloud.google.com/go/speech v1.20.1/go.mod h1:wwolycgONvfz2EDU8rKuHRW3+wc9ILPsAWoikBEWavY= +cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= cloud.google.com/go/storage v1.35.1/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= +cloud.google.com/go/storagetransfer v1.10.3/go.mod h1:Up8LY2p6X68SZ+WToswpQbQHnJpOty/ACcMafuey8gc= +cloud.google.com/go/talent v1.6.5/go.mod h1:Mf5cma696HmE+P2BWJ/ZwYqeJXEeU0UqjHFXVLadEDI= +cloud.google.com/go/texttospeech v1.7.4/go.mod h1:vgv0002WvR4liGuSd5BJbWy4nDn5Ozco0uJymY5+U74= +cloud.google.com/go/tpu v1.6.4/go.mod h1:NAm9q3Rq2wIlGnOhpYICNI7+bpBebMJbh0yyp3aNw1Y= +cloud.google.com/go/trace v1.10.4/go.mod h1:Nso99EDIK8Mj5/zmB+iGr9dosS/bzWCJ8wGmE6TXNWY= +cloud.google.com/go/translate v1.9.3/go.mod h1:Kbq9RggWsbqZ9W5YpM94Q1Xv4dshw/gr/SHfsl5yCZ0= +cloud.google.com/go/video v1.20.3/go.mod h1:TnH/mNZKVHeNtpamsSPygSR0iHtvrR/cW1/GDjN5+GU= +cloud.google.com/go/videointelligence v1.11.4/go.mod h1:kPBMAYsTPFiQxMLmmjpcZUMklJp3nC9+ipJJtprccD8= +cloud.google.com/go/vision/v2 v2.7.5/go.mod h1:GcviprJLFfK9OLf0z8Gm6lQb6ZFUulvpZws+mm6yPLM= +cloud.google.com/go/vmmigration v1.7.4/go.mod h1:yBXCmiLaB99hEl/G9ZooNx2GyzgsjKnw5fWcINRgD70= +cloud.google.com/go/vmwareengine v1.0.3/go.mod h1:QSpdZ1stlbfKtyt6Iu19M6XRxjmXO+vb5a/R6Fvy2y4= +cloud.google.com/go/vpcaccess v1.7.4/go.mod h1:lA0KTvhtEOb/VOdnH/gwPuOzGgM+CWsmGu6bb4IoMKk= +cloud.google.com/go/webrisk v1.9.4/go.mod h1:w7m4Ib4C+OseSr2GL66m0zMBywdrVNTDKsdEsfMl7X0= +cloud.google.com/go/websecurityscanner v1.6.4/go.mod h1:mUiyMQ+dGpPPRkHgknIZeCzSHJ45+fY4F52nZFDHm2o= +cloud.google.com/go/workflows v1.12.3/go.mod h1:fmOUeeqEwPzIU81foMjTRQIdwQHADi/vEr1cx9R1m5g= github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4/go.mod h1:hN7oaIRCjzsZ2dE+yG5k+rsdt3qcwykqK6HVGcKwsw4= github.com/99designs/keyring v1.2.1/go.mod h1:fc+wB5KTk9wQ9sDx0kFXB3A0MaeGHM9AwRStKOQ5vOA= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.4.0/go.mod h1:ON4tFdPTwRcgWEaVDrN3584Ef+b7GgSJaXxe5fW9t4M= github.com/Azure/azure-sdk-for-go/sdk/internal v1.1.2/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.0.0/go.mod h1:2e8rMJtl2+2j+HXbTBwnyGpm5Nou7KhvSfxOq8JpTag= -github.com/Azure/go-ansiterm v0.0.0-20230124172434-306776ec8161/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= github.com/Azure/go-autorest/autorest/adal v0.9.16/go.mod h1:tGMin8I49Yij6AQ+rvV+Xa/zwxYQB5hmsd6DkfAx2+A= github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= @@ -19,7 +139,6 @@ github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZ github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= github.com/ClickHouse/clickhouse-go v1.4.3/go.mod h1:EaI/sW7Azgz9UATzd5ZdZHRUhHgv5+JMS9NSr2smCJI= -github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/PuerkitoBio/purell v1.1.1 h1:WEQqlqaGbrPkxLJWfBwQmfEAE1Z7ONdDLqrN38tNFfI= github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 h1:d+Bc7a5rLufV/sSk/8dngufqelfh6jnri85riMAaF/M= @@ -27,6 +146,7 @@ github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdko github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY= github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA= github.com/apache/arrow/go/v10 v10.0.1/go.mod h1:YvhnlEePVnBS4+0z3fhPfUy7W1Ikj0Ih0vcRo/gZ1M0= +github.com/apache/arrow/go/v12 v12.0.0/go.mod h1:d+tV/eHZZ7Dz7RPrFKtPK02tpr+c9/PEd/zm8mDS9Vg= github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= github.com/armon/go-metrics v0.4.1/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= github.com/aws/aws-sdk-go v1.50.5 h1:H2Aadcgwr7a2aqS6ZwcE+l1mA6ZrTseYCvjw2QLmxIA= @@ -44,22 +164,21 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.17/go.mod h1:4n github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.17/go.mod h1:YqMdV+gEKCQ59NrB7rzrJdALeBIsYiVi8Inj3+KcqHI= github.com/aws/aws-sdk-go-v2/service/s3 v1.27.11/go.mod h1:fmgDANqTUCxciViKl9hb/zD5LFbvPINFRgWhDbR+vZo= github.com/aws/smithy-go v1.13.3/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cloudflare/golz4 v0.0.0-20150217214814-ef862a3cdc58/go.mod h1:EOBUe0h4xcZ5GoxqC5SDxFQ8gwyZPKQoEzownBlhI80= github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20231109132714-523115ebc101/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cockroachdb/cockroach-go/v2 v2.1.1/go.mod h1:7NtUnP6eK+l6k483WSYNrq3Kb23bWV10IRV1TyeSpwM= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cznic/mathutil v0.0.0-20180504122225-ca4c9f2c1369/go.mod h1:e6NPNENfs9mPDVNRekM7lKScauxd5kXTr1Mfyig6TDM= github.com/danieljoos/wincred v1.1.2/go.mod h1:GijpziifJoIBfYh+S7BbkdUTU4LfM+QnGqR5Vl2tAx0= -github.com/dhui/dktest v0.4.1/go.mod h1:DdOqcUpL7vgyP4GlF3X3w7HbSlz8cEQzwewPveYEQbA= -github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v24.0.9+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dvsekhvalnov/jose2go v1.6.0/go.mod h1:QsHjhyTlD/lAVqn/NSbVZmSCGeDehTB/mPZadG+mhXU= github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/envoyproxy/go-control-plane v0.11.1/go.mod h1:uhMcXKCQMEJHiAb0w+YGefQLaTEw+YhGluxZkrTmD0g= @@ -74,31 +193,47 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me github.com/gobuffalo/here v0.6.0/go.mod h1:wAG085dHOYqUpf+Ap+WOdrPTp5IYcDAs/x7PLa8Y5fM= github.com/gocql/gocql v0.0.0-20210515062232-b7ef815b4556/go.mod h1:DL0ekTmBSTdlNF25Orwt/JMzqIq3EJ4MVa/J/uK64OY= github.com/godbus/dbus v0.0.0-20190726142602-4481cbc300e2/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= -github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/golang-jwt/jwt/v4 v4.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= +github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v39 v39.2.0/go.mod h1:C1s8C5aCC9L+JXIYpJM5GYytdX52vC1bLvHEF1IhBrE= +github.com/google/go-pkcs11 v0.2.1-0.20230907215043-c6f79328ddf9/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= +github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/s2a-go v0.1.4/go.mod h1:Ej+mSEMGRnqRzjc7VtF+jdBwYG5fuJfiZ8ELkjEwM0A= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/google-cloud-go-testing v0.0.0-20210719221736-1c9a4c676720/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/handlers v1.4.2/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= github.com/gsterjov/go-libsecret v0.0.0-20161001094733-a6f4afe4910c/go.mod h1:NMPJylDgVpX0MLRlPy15sqSwOFv/U1GZ2m21JhFfek0= github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= github.com/hashicorp/consul/api v1.25.1/go.mod h1:iiLVwR/htV7mas/sy0O+XSuEnrdBUUydemjxcUrAt4g= +github.com/hashicorp/consul/sdk v0.14.1/go.mod h1:vFt03juSzocLRFo59NkeQHHmQa6+g7oU0pfzdI1mUhg= github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= github.com/jackc/pgconn v1.14.3/go.mod h1:RZbme4uasqzybK2RK5c65VsHxoyaml09lx3tXOcO/VM= @@ -113,11 +248,14 @@ github.com/k0kubun/pp v2.3.0+incompatible/go.mod h1:GWse8YhT0p8pT4ir3ZgBbfZild3t github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8= github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= +github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pty v1.1.1 h1:VkoXIwSboBpnk99O/KFauAEILuNHv5DVFKZMBN/gUgw= github.com/ktrysmt/go-bitbucket v0.6.4/go.mod h1:9u0v3hsd2rqCHRIpbir1oP7F58uo5dq19sBYvuMoyQ4= +github.com/lyft/protoc-gen-star/v2 v2.0.3/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= github.com/markbates/pkger v0.15.1/go.mod h1:0JoVlrol20BSywW79rN3kdFFsE5xYM+rSCQDXbLhiuI= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-sqlite3 v1.14.16/go.mod h1:2eHXhiwb8IkHr+BDWZGa96P6+rkvnG63S2DGjv9HUNg= github.com/microsoft/go-mssqldb v1.0.0/go.mod h1:+4wZTUnz/SV6nffv+RRRB/ss8jPng5Sho2SmM1l2ts4= @@ -125,10 +263,8 @@ github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcs github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= github.com/mtibben/percent v0.2.1/go.mod h1:KG9uO+SZkUp+VkRHsCdYQV3XSZrrSpR3O9ibNBTZrns= github.com/mutecomm/go-sqlcipher/v4 v4.4.0/go.mod h1:PyN04SaWalavxRGH9E8ZftG6Ju7rsPrGmQRjrEaVpiY= github.com/nakagami/firebirdsql v0.0.0-20190310045651-3c02a58cfed8/go.mod h1:86wM1zFnC6/uDBfZGNwB65O+pR2OFi5q/YQaEUid1qA= @@ -139,14 +275,17 @@ github.com/neo4j/neo4j-go-driver v1.8.1-0.20200803113522-b626aa943eba/go.mod h1: github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= +github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/pierrec/lz4/v4 v4.1.16/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= -github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/sftp v1.13.6/go.mod h1:tz1ryNURKu77RL+GuCzmoJYxQczL3wLNNpPWagdg4Qk= +github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_model v0.4.0/go.mod h1:oMQmHW1/JoDwqLtg57MGgP/Fb1CJEYF2imWWhWtMkYU= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rqlite/gorqlite v0.0.0-20230708021416-2acd02b70b79/go.mod h1:xF/KoXmrRyahPfo5L7Szb5cAAUl53dMWBh9cMruGEZg= github.com/sagikazarmark/crypt v0.17.0/go.mod h1:SMtHTvdmsZMuY/bpZoqokSoChIrcJ/epOxZN58PbZDg= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= @@ -154,6 +293,9 @@ github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeV github.com/sirupsen/logrus v1.9.2/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/snowflakedb/gosnowflake v1.6.19/go.mod h1:FM1+PWUdwB9udFDsXdfD58NONC0m+MlOSmQRvimobSM= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.2/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/swaggo/swag v1.16.2 h1:28Pp+8DkQoV+HLzLx8RGJZXNGKbFqnuvSbAAtoxiY04= github.com/swaggo/swag v1.16.2/go.mod h1:6YzXnDcpr0767iOejs318CwYkCQqyGer6BizOg03f+E= @@ -174,25 +316,66 @@ go.etcd.io/etcd/client/v2 v2.305.10/go.mod h1:m3CKZi69HzilhVqtPDcjhSGp+kA1OmbNn0 go.etcd.io/etcd/client/v3 v3.5.10/go.mod h1:RVeBnDz2PUEZqTpgqwAtUd8nAPf5kjyFyND7P1VkOKc= go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= -go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= -go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= +go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20220314234659-1baeb1ce4c0b/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= +golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= +golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= +golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= +golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= +golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= +golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= +golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= +golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.9.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/telemetry v0.0.0-20240208230135-b75ee8823808/go.mod h1:KG1lNk5ZFNssSZLrpVb4sMXKMpGwGXOxSG3rnu2gZQQ= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= @@ -201,22 +384,48 @@ golang.org/x/term v0.16.0/go.mod h1:yn7UURbUtPyrVJPGPq404EukNFxcm/foM+bV/bfcDsY= golang.org/x/term v0.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= +golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.10.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.10.0/go.mod h1:UJwyiVBsOA2uwvK/e5OY3GTpDUJriEd+/YlqAwLPmyM= +golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= +google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= +google.golang.org/api v0.150.0/go.mod h1:ccy+MJ6nrYFgE3WgRx/AMXOxOmU8Q4hSa+jjibzhxcg= +google.golang.org/api v0.152.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2PrriAY= google.golang.org/api v0.153.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2PrriAY= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= +google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:CgAqfJo+Xmu0GwA0411Ht3OU3OntXwsGmrmjI8ioGXI= +google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405/go.mod h1:3WDQMjmJk36UQhjQ89emUzb1mdaHcPeeAh4SCBKznB4= google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= +google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870= +google.golang.org/genproto/googleapis/api v0.0.0-20231030173426-d783a09b4405/go.mod h1:oT32Z4o8Zv2xPQTg0pbVaPr0MPOH6f14RgXt7zfIpwg= google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20231120223509-83a465c0220f/go.mod h1:iIgEblxoG4klcXsG0d9cpoxJ4xndv6+1FkDROCHhPRI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE= google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= +google.golang.org/protobuf v1.30.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gorm.io/driver/postgres v1.5.4 h1:Iyrp9Meh3GmbSuyIAGyjkN+n9K+GHX9b9MqsTL4EJCo= gorm.io/driver/postgres v1.5.4/go.mod h1:Bgo89+h0CRcdA33Y6frlaHHVuTdOf87pmyzwW9C/BH0= diff --git a/install_cli.sh b/install_cli.sh index 7318d0762..6fd2ea5e3 100755 --- a/install_cli.sh +++ b/install_cli.sh @@ -6,32 +6,20 @@ set -o pipefail # Get the absolute path to the current script SCRIPT_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -# Build the Go CLI tool -# Check if the command is already installed to avoid adding it to path multiple times -COMMAND_NAME="sac" +cd "$SCRIPT_PATH/cli" -if command -v "$COMMAND_NAME" >/dev/null 2>&1; then - echo "Command '$COMMAND_NAME' is already installed. Removing it..." - rm "$(command -v "$COMMAND_NAME")" +# Check for Windows or Unix-like system +if [[ $(uname -s) == "MINGW64" || $(uname -s) == "CYGWIN" || $(uname -s) == "MSYS" ]]; then + export GOPATH="%USERPROFILE%\go" +else + export GOPATH="$HOME/go" fi -go build -o "sac" "cli/main.go" - -# Identify the user's shell -SHELL_NAME=$(basename "$SHELL") +# Build the executable +go build -o "sac" +mkdir -p "$GOPATH/bin" -# Add sac to the user's PATH -if [[ $SHELL_NAME == "zsh" ]]; then - echo "export PATH=\"$SCRIPT_PATH:\$PATH\"" >>~/.zshrc - source ~/.zshrc -elif [[ $SHELL_NAME == "bash" ]]; then - echo "export PATH=\"$SCRIPT_PATH:\$PATH\"" >>~/.bashrc - source ~/.bashrc -else - echo "Unsupported shell: $SHELL_NAME" - exit 1 -fi +mv "sac" "$GOPATH/bin" -# Inform the user -echo "Installation complete. You can now run 'sac' from anywhere." +echo "Installation complete. You can now run 'sac'" From fc9a43404212567ed3ed1076efe7d51dcca6c0f9 Mon Sep 17 00:00:00 2001 From: David Oduneye <44040421+DOOduneye@users.noreply.github.com> Date: Sun, 28 Apr 2024 16:29:51 -0700 Subject: [PATCH 2/8] doc: added documentation for cli (#686) --- cli/README.md | 63 +++++++++++++++++++++++++++++ frontend/dashboard/src/app/page.tsx | 2 +- go.work.sum | 1 + 3 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 cli/README.md diff --git a/cli/README.md b/cli/README.md new file mode 100644 index 000000000..3539602e7 --- /dev/null +++ b/cli/README.md @@ -0,0 +1,63 @@ +# SAC (Student Activity Calendar) CLI + +[![CLI](https://github.com/GenerateNU/sac/actions/workflows/cli.yml/badge.svg)](https://github.com/GenerateNU/sac/actions/workflows/cli.yml) +[![Go Report Card](https://goreportcard.com/badge/github.com/GenerateNU/sac/cli)](https://goreportcard.com/report/github.com/GenerateNU/sac/cli) +[![License](https://img.shields.io/github/license/GenerateNU/sac)](https://github.com/GenerateNU/sac/blob/main/LICENSE) + + + +## Introduction +The SAC CLI is a tool designed to help manage and automate tasks for the GenerateNU Student Activity Calendar platform. It provides a comprehensive suite of commands for formatting, testing, linting, running, and managing databases and other configurations essential for the SAC platform. + +## Table of Contents + +1. [Installation](#installation) +2. [Usage](#usage) +3. [Available Commands](#available-commands) +4. [Command Aliases](#command-aliases) +5. [Dependencies](#dependencies) +6. [License](#license) + +## Installation + +To install the SAC CLI, clone the repository and run the following script from the root of the application: + +```bash +./install_cli.sh +``` + +## Usage + +To use the SAC CLI, you can run it with various flags or commands: + +``` +sac [flags] +sac [command] +``` + +## Available Commands + +- **completion**: Generate the autocompletion script for the specified shell. +- **database**: Database management commands. +- **format**: Formatting commands. +- **help**: Help about any command. +- **lint**: Linting commands. +- **run**: Run commands for backend and frontend. +- **setup**: Installs and sets up the project. (WIP) +- **swagger**: Run swagger initialization for backend openapi spec. +- **test**: Testing commands. + +For more detailed information about a command, use: + +```bash +sac [command] --help +``` + +## Command Aliases + +Several commands in the SAC CLI are equipped with short aliases to make them quicker and easier to use. For example, a command like `sac format frontend dashboard` which is pretty lengthy can be shortened to `sac f fe d`. + +## Dependencies + +- `golangci-lint`: A linter aggregator for Go, ensuring code quality. +- `gofumpt`: A stricter formatter for Go code, ensuring consistency. diff --git a/frontend/dashboard/src/app/page.tsx b/frontend/dashboard/src/app/page.tsx index 06e3a13ed..3763448a3 100644 --- a/frontend/dashboard/src/app/page.tsx +++ b/frontend/dashboard/src/app/page.tsx @@ -1,4 +1,4 @@ -import Image from 'next/image'; +import Image from "next/image"; export default function Home() { return ( diff --git a/go.work.sum b/go.work.sum index d11da3f9e..5a2b8473b 100644 --- a/go.work.sum +++ b/go.work.sum @@ -287,6 +287,7 @@ github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/remyoudompheng/bigfft v0.0.0-20200410134404-eec4a21b6bb0/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rqlite/gorqlite v0.0.0-20230708021416-2acd02b70b79/go.mod h1:xF/KoXmrRyahPfo5L7Szb5cAAUl53dMWBh9cMruGEZg= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/sagikazarmark/crypt v0.17.0/go.mod h1:SMtHTvdmsZMuY/bpZoqokSoChIrcJ/epOxZN58PbZDg= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= From 17a0f897711a86b10afc96b4e52956b4679699e4 Mon Sep 17 00:00:00 2001 From: David Oduneye <44040421+DOOduneye@users.noreply.github.com> Date: Mon, 29 Apr 2024 07:11:00 -0700 Subject: [PATCH 3/8] fix: ../ over @/ (#689) --- frontend/lib/api/authApi.ts | 6 +- frontend/lib/api/categoryApi.ts | 6 +- frontend/lib/api/clubApi.ts | 14 +- frontend/lib/api/contactApi.ts | 4 +- frontend/lib/api/eventApi.ts | 8 +- frontend/lib/api/fileApi.ts | 4 +- frontend/lib/api/pointOfContactApi.ts | 4 +- frontend/lib/api/tagApi.ts | 4 +- frontend/lib/api/userApi.ts | 10 +- frontend/mobile/package.json | 3 +- frontend/tsconfig.json | 4 - frontend/yarn.lock | 629 ++++++++++++++++---------- 12 files changed, 427 insertions(+), 269 deletions(-) delete mode 100644 frontend/tsconfig.json diff --git a/frontend/lib/api/authApi.ts b/frontend/lib/api/authApi.ts index 84a79d870..8452eb392 100644 --- a/frontend/lib/api/authApi.ts +++ b/frontend/lib/api/authApi.ts @@ -1,10 +1,10 @@ -import { LoginRequestBody, RefreshTokenRequestBody } from '@/types/auth'; -import { User, userSchema } from '@/types/user'; +import { LoginRequestBody, RefreshTokenRequestBody } from '../types/auth'; +import { User, userSchema } from '../types/user'; import { EmailRequestBody, VerifyEmailRequestBody, VerifyPasswordResetTokenRequestBody -} from '@/types/verification'; +} from '../types/verification'; import { baseApi } from '../api/base'; diff --git a/frontend/lib/api/categoryApi.ts b/frontend/lib/api/categoryApi.ts index 0a7f815f3..161e307dc 100644 --- a/frontend/lib/api/categoryApi.ts +++ b/frontend/lib/api/categoryApi.ts @@ -4,9 +4,9 @@ import { Category, CreateCategoryRequestBody, categorySchema -} from '@/types/category'; -import { PaginationQueryParams } from '@/types/root'; -import { Tag } from '@/types/tag'; +} from '../types/category'; +import { PaginationQueryParams } from '../types/root'; +import { Tag } from '../types/tag'; import { baseApi, handleQueryParams } from '../api/base'; diff --git a/frontend/lib/api/clubApi.ts b/frontend/lib/api/clubApi.ts index 739ea1017..3481f835b 100644 --- a/frontend/lib/api/clubApi.ts +++ b/frontend/lib/api/clubApi.ts @@ -6,21 +6,21 @@ import { CreateClubTagsRequestBody, UpdateClubRequestBody, clubSchema -} from '@/types/club'; +} from '../types/club'; import { Contact, CreateContactRequestBody, contactSchema -} from '@/types/contact'; -import { Event, eventSchema } from '@/types/event'; +} from '../types/contact'; +import { Event, eventSchema } from '../types/event'; import { PointOfContact, UpdatePointOfContactRequestBody, pointOfContactSchema -} from '@/types/pointOfContact'; -import { PaginationQueryParams } from '@/types/root'; -import { Tag, tagSchema } from '@/types/tag'; -import { User, userSchema } from '@/types/user'; +} from '../types/pointOfContact'; +import { PaginationQueryParams } from '../types/root'; +import { Tag, tagSchema } from '../types/tag'; +import { User, userSchema } from '../types/user'; import { baseApi, handleQueryParams } from '../api/base'; diff --git a/frontend/lib/api/contactApi.ts b/frontend/lib/api/contactApi.ts index 35f4079a3..396d94089 100644 --- a/frontend/lib/api/contactApi.ts +++ b/frontend/lib/api/contactApi.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { Contact, contactSchema } from '@/types/contact'; -import { PaginationQueryParams } from '@/types/root'; +import { Contact, contactSchema } from '../types/contact'; +import { PaginationQueryParams } from '../types/root'; import { baseApi, handleQueryParams } from '../api/base'; diff --git a/frontend/lib/api/eventApi.ts b/frontend/lib/api/eventApi.ts index 7d394eac6..ee8e29618 100644 --- a/frontend/lib/api/eventApi.ts +++ b/frontend/lib/api/eventApi.ts @@ -1,14 +1,14 @@ import { z } from 'zod'; -import { Club, clubSchema } from '@/types/club'; +import { Club, clubSchema } from '../types/club'; import { CreateEventRequestBody, Event, UpdateEventRequestBody, eventSchema -} from '@/types/event'; -import { PaginationQueryParams } from '@/types/root'; -import { Tag } from '@/types/tag'; +} from '../types/event'; +import { PaginationQueryParams } from '../types/root'; +import { Tag } from '../types/tag'; import { baseApi, handleQueryParams } from '../api/base'; diff --git a/frontend/lib/api/fileApi.ts b/frontend/lib/api/fileApi.ts index f9662a28d..9df28d1ee 100644 --- a/frontend/lib/api/fileApi.ts +++ b/frontend/lib/api/fileApi.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { File, fileSchema } from '@/types/file'; -import { PaginationQueryParams } from '@/types/root'; +import { File, fileSchema } from '../types/file'; +import { PaginationQueryParams } from '../types/root'; import { baseApi, handleQueryParams } from '../api/base'; diff --git a/frontend/lib/api/pointOfContactApi.ts b/frontend/lib/api/pointOfContactApi.ts index 4bdea42cf..905a6a499 100644 --- a/frontend/lib/api/pointOfContactApi.ts +++ b/frontend/lib/api/pointOfContactApi.ts @@ -1,7 +1,7 @@ import { z } from 'zod'; -import { PointOfContact, pointOfContactSchema } from '@/types/pointOfContact'; -import { PaginationQueryParams } from '@/types/root'; +import { PointOfContact, pointOfContactSchema } from '../types/pointOfContact'; +import { PaginationQueryParams } from '../types/root'; import { baseApi, handleQueryParams } from '../api/base'; diff --git a/frontend/lib/api/tagApi.ts b/frontend/lib/api/tagApi.ts index a2e056296..c302b2d3a 100644 --- a/frontend/lib/api/tagApi.ts +++ b/frontend/lib/api/tagApi.ts @@ -1,12 +1,12 @@ import { z } from 'zod'; -import { PaginationQueryParams } from '@/types/root'; +import { PaginationQueryParams } from '../types/root'; import { CreateTagRequestBody, Tag, UpdateTagRequestBody, tagSchema -} from '@/types/tag'; +} from '../types/tag'; import { baseApi, handleQueryParams } from '../api/base'; diff --git a/frontend/lib/api/userApi.ts b/frontend/lib/api/userApi.ts index 39399588d..3092daa01 100644 --- a/frontend/lib/api/userApi.ts +++ b/frontend/lib/api/userApi.ts @@ -1,16 +1,16 @@ import { z } from 'zod'; -import { UpdatePasswordRequestBody } from '@/types/auth'; -import { Club, clubSchema } from '@/types/club'; -import { PaginationQueryParams } from '@/types/root'; -import { Tag, tagSchema } from '@/types/tag'; +import { UpdatePasswordRequestBody } from '../types/auth'; +import { Club, clubSchema } from '../types/club'; +import { PaginationQueryParams } from '../types/root'; +import { Tag, tagSchema } from '../types/tag'; import { CreateUserRequestBody, CreateUserTagsRequestBody, UpdateUserRequestBody, User, userSchema -} from '@/types/user'; +} from '../types/user'; import { baseApi, handleQueryParams } from '../api/base'; diff --git a/frontend/mobile/package.json b/frontend/mobile/package.json index a57374c9b..69570b820 100644 --- a/frontend/mobile/package.json +++ b/frontend/mobile/package.json @@ -19,6 +19,7 @@ "@gorhom/bottom-sheet": "^4", "@react-native-community/masked-view": "^0.1.11", "@react-native-menu/menu": "^1.0.1", + "@react-native/babel-preset": "^0.74.81", "@react-navigation/native": "^6.1.17", "@react-navigation/stack": "^6.3.29", "@reduxjs/toolkit": "^2.2.3", @@ -84,7 +85,7 @@ "prettier": "^3.2.4", "react-native-svg-transformer": "^1.3.0", "react-test-renderer": "18.3.1", - "tailwindcss": "3.4.3", + "tailwindcss": "3.3.2", "typescript": "^5.4.5" }, "private": true diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json deleted file mode 100644 index 0e6371f6f..000000000 --- a/frontend/tsconfig.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "compilerOptions": {}, - "extends": "expo/tsconfig.base" -} diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 706e36738..93ef37d62 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -372,6 +372,14 @@ "@babel/helper-plugin-utils" "^7.24.0" "@babel/plugin-syntax-export-default-from" "^7.24.1" +"@babel/plugin-proposal-logical-assignment-operators@^7.18.0": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" + integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-proposal-nullish-coalescing-operator@^7.13.8", "@babel/plugin-proposal-nullish-coalescing-operator@^7.18.0": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" @@ -2046,62 +2054,62 @@ "@jridgewell/resolve-uri" "^3.1.0" "@jridgewell/sourcemap-codec" "^1.4.14" -"@next/env@14.2.1": - version "14.2.1" - resolved "https://registry.yarnpkg.com/@next/env/-/env-14.2.1.tgz#18b4fb5fd76bdda65369ad4ea5f33199ae708d2f" - integrity sha512-qsHJle3GU3CmVx7pUoXcghX4sRN+vINkbLdH611T8ZlsP//grzqVW87BSUgOZeSAD4q7ZdZicdwNe/20U2janA== +"@next/env@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/env/-/env-14.2.3.tgz#d6def29d1c763c0afb397343a15a82e7d92353a0" + integrity sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA== -"@next/eslint-plugin-next@14.2.1": - version "14.2.1" - resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.1.tgz#909952d05dd22bb3f6db2a308ac148be2d05c775" - integrity sha512-Fp+mthEBjkn8r9qd6o4JgxKp0IDEzW0VYHD8ZC05xS5/lFNwHKuOdr2kVhWG7BQCO9L6eeepshM1Wbs2T+LgSg== +"@next/eslint-plugin-next@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.3.tgz#287ad8620e7061ba01e8d3313d464db6d217b6df" + integrity sha512-L3oDricIIjgj1AVnRdRor21gI7mShlSwU/1ZGHmqM3LzHhXXhdkrfeNY5zif25Bi5Dd7fiJHsbhoZCHfXYvlAw== dependencies: glob "10.3.10" -"@next/swc-darwin-arm64@14.2.1": - version "14.2.1" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.1.tgz#44ca580ccac1396fa45e2bcc6584238098491e71" - integrity sha512-kGjnjcIJehEcd3rT/3NAATJQndAEELk0J9GmGMXHSC75TMnvpOhONcjNHbjtcWE5HUQnIHy5JVkatrnYm1QhVw== - -"@next/swc-darwin-x64@14.2.1": - version "14.2.1" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.1.tgz#1747091f40fd3b0d8e072ba62203ec998619525f" - integrity sha512-dAdWndgdQi7BK2WSXrx4lae7mYcOYjbHJUhvOUnJjMNYrmYhxbbvJ2xElZpxNxdfA6zkqagIB9He2tQk+l16ew== - -"@next/swc-linux-arm64-gnu@14.2.1": - version "14.2.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.1.tgz#ede705718c316e65e3dd9ab31962824b8befb0cb" - integrity sha512-2ZctfnyFOGvTkoD6L+DtQtO3BfFz4CapoHnyLTXkOxbZkVRgg3TQBUjTD/xKrO1QWeydeo8AWfZRg8539qNKrg== - -"@next/swc-linux-arm64-musl@14.2.1": - version "14.2.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.1.tgz#ce50a5d94a7ba1f8e34a941f4ca076d8beebc79c" - integrity sha512-jazZXctiaanemy4r+TPIpFP36t1mMwWCKMsmrTRVChRqE6putyAxZA4PDujx0SnfvZHosjdkx9xIq9BzBB5tWg== - -"@next/swc-linux-x64-gnu@14.2.1": - version "14.2.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.1.tgz#ac3e8fa4d028fe7a9d9b7c33db3ab65679ae5fe2" - integrity sha512-VjCHWCjsAzQAAo8lkBOLEIkBZFdfW+Z18qcQ056kL4KpUYc8o59JhLDCBlhg+hINQRgzQ2UPGma2AURGOH0+Qg== - -"@next/swc-linux-x64-musl@14.2.1": - version "14.2.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.1.tgz#2beb7bee80dfb54a36d81392f21c599014018177" - integrity sha512-7HZKYKvAp4nAHiHIbY04finRqjeYvkITOGOurP1aLMexIFG/1+oCnqhGogBdc4lao/lkMW1c+AkwWSzSlLasqw== - -"@next/swc-win32-arm64-msvc@14.2.1": - version "14.2.1" - resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.1.tgz#b25df35a6ed99eb73bfed07822dd28a37aaab9f9" - integrity sha512-YGHklaJ/Cj/F0Xd8jxgj2p8po4JTCi6H7Z3Yics3xJhm9CPIqtl8erlpK1CLv+HInDqEWfXilqatF8YsLxxA2Q== - -"@next/swc-win32-ia32-msvc@14.2.1": - version "14.2.1" - resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.1.tgz#2cc67b93f0a71a8f3c1dd735676f4c9ddd4240ff" - integrity sha512-o+ISKOlvU/L43ZhtAAfCjwIfcwuZstiHVXq/BDsZwGqQE0h/81td95MPHliWCnFoikzWcYqh+hz54ZB2FIT8RA== - -"@next/swc-win32-x64-msvc@14.2.1": - version "14.2.1" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.1.tgz#e5f4003930de4a150a8c2e7cf5c133cd99a686bd" - integrity sha512-GmRoTiLcvCLifujlisknv4zu9/C4i9r0ktsA8E51EMqJL4bD4CpO7lDYr7SrUxCR0tS4RVcrqKmCak24T0ohaw== +"@next/swc-darwin-arm64@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.3.tgz#db1a05eb88c0224089b815ad10ac128ec79c2cdb" + integrity sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A== + +"@next/swc-darwin-x64@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.3.tgz#a3f8af05b5f9a52ac3082e66ac29e125ab1d7b9c" + integrity sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA== + +"@next/swc-linux-arm64-gnu@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.3.tgz#4e63f43879285b52554bfd39e6e0cc78a9b27bbf" + integrity sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA== + +"@next/swc-linux-arm64-musl@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.3.tgz#ebdaed26214448b1e6f2c3e8b3cd29bfba387990" + integrity sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw== + +"@next/swc-linux-x64-gnu@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.3.tgz#19e3bcc137c3b582a1ab867106817e5c90a20593" + integrity sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w== + +"@next/swc-linux-x64-musl@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.3.tgz#794a539b98e064169cf0ff7741b2a4fb16adec7d" + integrity sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ== + +"@next/swc-win32-arm64-msvc@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.3.tgz#eda9fa0fbf1ff9113e87ac2668ee67ce9e5add5a" + integrity sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A== + +"@next/swc-win32-ia32-msvc@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.3.tgz#7c1190e3f640ab16580c6bdbd7d0e766b9920457" + integrity sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw== + +"@next/swc-win32-x64-msvc@14.2.3": + version "14.2.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz#2be4e39ee25bfbd85be78eea17c0e7751dc4323c" + integrity sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA== "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": version "5.1.1-v1" @@ -2172,43 +2180,45 @@ "@babel/runtime" "^7.13.10" "@radix-ui/react-compose-refs" "1.0.0" -"@react-native-community/cli-clean@12.3.6": - version "12.3.6" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-12.3.6.tgz#e8a7910bebc97266fd5068649013a03958021fc4" - integrity sha512-gUU29ep8xM0BbnZjwz9MyID74KKwutq9x5iv4BCr2im6nly4UMf1B1D+V225wR7VcDGzbgWjaezsJShLLhC5ig== +"@react-native-community/cli-clean@13.6.4": + version "13.6.4" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-clean/-/cli-clean-13.6.4.tgz#53c07c6f2834a971dc40eab290edcf8ccc5d1e00" + integrity sha512-nS1BJ+2Z+aLmqePxB4AYgJ+C/bgQt02xAgSYtCUv+lneRBGhL2tHRrK8/Iolp0y+yQoUtHHf4txYi90zGXLVfw== dependencies: - "@react-native-community/cli-tools" "12.3.6" + "@react-native-community/cli-tools" "13.6.4" chalk "^4.1.2" execa "^5.0.0" + fast-glob "^3.3.2" -"@react-native-community/cli-config@12.3.6": - version "12.3.6" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-12.3.6.tgz#5f0be68270217908a739c32e3155a0e354773251" - integrity sha512-JGWSYQ9EAK6m2v0abXwFLEfsqJ1zkhzZ4CV261QZF9MoUNB6h57a274h1MLQR9mG6Tsh38wBUuNfEPUvS1vYew== +"@react-native-community/cli-config@13.6.4": + version "13.6.4" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-config/-/cli-config-13.6.4.tgz#3004c7bca55cb384b3a99c38c1a48dad24533237" + integrity sha512-GGK415WoTx1R9FXtfb/cTnan9JIWwSm+a5UCuFd6+suzS0oIt1Md1vCzjNh6W1CK3b43rZC2e+3ZU7Ljd7YtyQ== dependencies: - "@react-native-community/cli-tools" "12.3.6" + "@react-native-community/cli-tools" "13.6.4" chalk "^4.1.2" cosmiconfig "^5.1.0" deepmerge "^4.3.0" - glob "^7.1.3" + fast-glob "^3.3.2" joi "^17.2.1" -"@react-native-community/cli-debugger-ui@12.3.6": - version "12.3.6" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-12.3.6.tgz#418027a1ae76850079684d309a732eb378c7f690" - integrity sha512-SjUKKsx5FmcK9G6Pb6UBFT0s9JexVStK5WInmANw75Hm7YokVvHEgtprQDz2Uvy5znX5g2ujzrkIU//T15KQzA== +"@react-native-community/cli-debugger-ui@13.6.4": + version "13.6.4" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-13.6.4.tgz#3881b9cfe14e66b3ee827a84f19ca9d0283fd764" + integrity sha512-9Gs31s6tA1kuEo69ay9qLgM3x2gsN/RI994DCUKnFSW+qSusQJyyrmfllR2mGU3Wl1W09/nYpIg87W9JPf5y4A== dependencies: serve-static "^1.13.1" -"@react-native-community/cli-doctor@12.3.6": - version "12.3.6" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-12.3.6.tgz#f68b51bbc6554ff4837269d98e9e405044e6f1b9" - integrity sha512-fvBDv2lTthfw4WOQKkdTop2PlE9GtfrlNnpjB818MhcdEnPjfQw5YaTUcnNEGsvGomdCs1MVRMgYXXwPSN6OvQ== +"@react-native-community/cli-doctor@13.6.4": + version "13.6.4" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-doctor/-/cli-doctor-13.6.4.tgz#07e5c2f163807e61ce0ba12901903e591177e3d3" + integrity sha512-lWOXCISH/cHtLvO0cWTr+IPSzA54FewVOw7MoCMEvWusH+1n7c3hXTAve78mLozGQ7iuUufkHFWwKf3dzOkflQ== dependencies: - "@react-native-community/cli-config" "12.3.6" - "@react-native-community/cli-platform-android" "12.3.6" - "@react-native-community/cli-platform-ios" "12.3.6" - "@react-native-community/cli-tools" "12.3.6" + "@react-native-community/cli-config" "13.6.4" + "@react-native-community/cli-platform-android" "13.6.4" + "@react-native-community/cli-platform-apple" "13.6.4" + "@react-native-community/cli-platform-ios" "13.6.4" + "@react-native-community/cli-tools" "13.6.4" chalk "^4.1.2" command-exists "^1.2.8" deepmerge "^4.3.0" @@ -2222,52 +2232,54 @@ wcwidth "^1.0.1" yaml "^2.2.1" -"@react-native-community/cli-hermes@12.3.6": - version "12.3.6" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-12.3.6.tgz#5ac2c9ee26c69e1ce6b5047ba0f399984a6dea16" - integrity sha512-sNGwfOCl8OAIjWCkwuLpP8NZbuO0dhDI/2W7NeOGDzIBsf4/c4MptTrULWtGIH9okVPLSPX0NnRyGQ+mSwWyuQ== +"@react-native-community/cli-hermes@13.6.4": + version "13.6.4" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-hermes/-/cli-hermes-13.6.4.tgz#6d3e9b5c251461e9bb35b04110544db8a4f5968f" + integrity sha512-VIAufA/2wTccbMYBT9o+mQs9baOEpTxCiIdWeVdkPWKzIwtKsLpDZJlUqj4r4rI66mwjFyQ60PhwSzEJ2ApFeQ== dependencies: - "@react-native-community/cli-platform-android" "12.3.6" - "@react-native-community/cli-tools" "12.3.6" + "@react-native-community/cli-platform-android" "13.6.4" + "@react-native-community/cli-tools" "13.6.4" chalk "^4.1.2" hermes-profile-transformer "^0.0.6" -"@react-native-community/cli-platform-android@12.3.6": - version "12.3.6" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-12.3.6.tgz#e1103692c659ff0b72ee6f00b7c72578db7376ec" - integrity sha512-DeDDAB8lHpuGIAPXeeD9Qu2+/wDTFPo99c8uSW49L0hkmZJixzvvvffbGQAYk32H0TmaI7rzvzH+qzu7z3891g== +"@react-native-community/cli-platform-android@13.6.4": + version "13.6.4" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-android/-/cli-platform-android-13.6.4.tgz#78ab4c840f4f1f5252ad2fcc5a55f7681ec458cb" + integrity sha512-WhknYwIobKKCqaGCN3BzZEQHTbaZTDiGvcXzevvN867ldfaGdtbH0DVqNunbPoV1RNzeV9qKoQHFdWBkg83tpg== dependencies: - "@react-native-community/cli-tools" "12.3.6" + "@react-native-community/cli-tools" "13.6.4" chalk "^4.1.2" execa "^5.0.0" + fast-glob "^3.3.2" fast-xml-parser "^4.2.4" - glob "^7.1.3" logkitty "^0.7.1" -"@react-native-community/cli-platform-ios@12.3.6": - version "12.3.6" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-12.3.6.tgz#e7decb5ee764f5fdc7a6ad1ba5e15de8929d54a5" - integrity sha512-3eZ0jMCkKUO58wzPWlvAPRqezVKm9EPZyaPyHbRPWU8qw7JqkvnRlWIaYDGpjCJgVW4k2hKsEursLtYKb188tg== +"@react-native-community/cli-platform-apple@13.6.4": + version "13.6.4" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-apple/-/cli-platform-apple-13.6.4.tgz#4912eaf519800a957745192718822b94655c8119" + integrity sha512-TLBiotdIz0veLbmvNQIdUv9fkBx7m34ANGYqr5nH7TFxdmey+Z+omoBqG/HGpvyR7d0AY+kZzzV4k+HkYHM/aQ== dependencies: - "@react-native-community/cli-tools" "12.3.6" + "@react-native-community/cli-tools" "13.6.4" chalk "^4.1.2" execa "^5.0.0" + fast-glob "^3.3.2" fast-xml-parser "^4.0.12" - glob "^7.1.3" ora "^5.4.1" -"@react-native-community/cli-plugin-metro@12.3.6": - version "12.3.6" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-12.3.6.tgz#ae62de18e998478db60a3fe10dc746162c272dbd" - integrity sha512-3jxSBQt4fkS+KtHCPSyB5auIT+KKIrPCv9Dk14FbvOaEh9erUWEm/5PZWmtboW1z7CYeNbFMeXm9fM2xwtVOpg== +"@react-native-community/cli-platform-ios@13.6.4": + version "13.6.4" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-platform-ios/-/cli-platform-ios-13.6.4.tgz#96ec915c6df23b2b7b7e0d8cb3db7368e448d620" + integrity sha512-8Dlva8RY+MY5nhWAj6V7voG3+JOEzDTJmD0FHqL+4p0srvr9v7IEVcxfw5lKBDIUNd0OMAHNevGA+cyz1J60jg== + dependencies: + "@react-native-community/cli-platform-apple" "13.6.4" -"@react-native-community/cli-server-api@12.3.6": - version "12.3.6" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-12.3.6.tgz#cd78122954a02d22c7821c365938635b51ddd1bd" - integrity sha512-80NIMzo8b2W+PL0Jd7NjiJW9mgaT8Y8wsIT/lh6mAvYH7mK0ecDJUYUTAAv79Tbo1iCGPAr3T295DlVtS8s4yQ== +"@react-native-community/cli-server-api@13.6.4": + version "13.6.4" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-server-api/-/cli-server-api-13.6.4.tgz#6bcec7ae387fc3aeb3e78f62561a91962e6fadf7" + integrity sha512-D2qSuYCFwrrUJUM0SDc9l3lEhU02yjf+9Peri/xhspzAhALnsf6Z/H7BCjddMV42g9/eY33LqiGyN5chr83a+g== dependencies: - "@react-native-community/cli-debugger-ui" "12.3.6" - "@react-native-community/cli-tools" "12.3.6" + "@react-native-community/cli-debugger-ui" "13.6.4" + "@react-native-community/cli-tools" "13.6.4" compression "^1.7.1" connect "^3.6.5" errorhandler "^1.5.1" @@ -2276,13 +2288,14 @@ serve-static "^1.13.1" ws "^7.5.1" -"@react-native-community/cli-tools@12.3.6": - version "12.3.6" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-12.3.6.tgz#c39965982347635dfaf1daa7b3c0133b3bd45e64" - integrity sha512-FPEvZn19UTMMXUp/piwKZSh8cMEfO8G3KDtOwo53O347GTcwNrKjgZGtLSPELBX2gr+YlzEft3CoRv2Qmo83fQ== +"@react-native-community/cli-tools@13.6.4": + version "13.6.4" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-tools/-/cli-tools-13.6.4.tgz#ab396604b6dcf215790807fe89656e779b11f0ec" + integrity sha512-N4oHLLbeTdg8opqJozjClmuTfazo1Mt+oxU7mr7m45VCsFgBqTF70Uwad289TM/3l44PP679NRMAHVYqpIRYtQ== dependencies: appdirsjs "^1.2.4" chalk "^4.1.2" + execa "^5.0.0" find-up "^5.0.0" mime "^2.4.1" node-fetch "^2.6.0" @@ -2292,27 +2305,26 @@ shell-quote "^1.7.3" sudo-prompt "^9.0.0" -"@react-native-community/cli-types@12.3.6": - version "12.3.6" - resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-12.3.6.tgz#239de348800fe1ffba3eb1fe0edbeb9306981e57" - integrity sha512-xPqTgcUtZowQ8WKOkI9TLGBwH2bGggOC4d2FFaIRST3gTcjrEeGRNeR5aXCzJFIgItIft8sd7p2oKEdy90+01Q== +"@react-native-community/cli-types@13.6.4": + version "13.6.4" + resolved "https://registry.yarnpkg.com/@react-native-community/cli-types/-/cli-types-13.6.4.tgz#e499a3691ee597aa4b93196ff182a4782fae7afb" + integrity sha512-NxGCNs4eYtVC8x0wj0jJ/MZLRy8C+B9l8lY8kShuAcvWTv5JXRqmXjg8uK1aA+xikPh0maq4cc/zLw1roroY/A== dependencies: joi "^17.2.1" -"@react-native-community/cli@12.3.6": - version "12.3.6" - resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-12.3.6.tgz#7a323b78725b959bb8a31cca1145918263ff3c8d" - integrity sha512-647OSi6xBb8FbwFqX9zsJxOzu685AWtrOUWHfOkbKD+5LOpGORw+GQo0F9rWZnB68rLQyfKUZWJeaD00pGv5fw== - dependencies: - "@react-native-community/cli-clean" "12.3.6" - "@react-native-community/cli-config" "12.3.6" - "@react-native-community/cli-debugger-ui" "12.3.6" - "@react-native-community/cli-doctor" "12.3.6" - "@react-native-community/cli-hermes" "12.3.6" - "@react-native-community/cli-plugin-metro" "12.3.6" - "@react-native-community/cli-server-api" "12.3.6" - "@react-native-community/cli-tools" "12.3.6" - "@react-native-community/cli-types" "12.3.6" +"@react-native-community/cli@13.6.4": + version "13.6.4" + resolved "https://registry.yarnpkg.com/@react-native-community/cli/-/cli-13.6.4.tgz#dabe2749470a34533e18aada51d97c94b3568307" + integrity sha512-V7rt2N5JY7M4dJFgdNfR164r3hZdR/Z7V54dv85TFQHRbdwF4QrkG+GeagAU54qrkK/OU8OH3AF2+mKuiNWpGA== + dependencies: + "@react-native-community/cli-clean" "13.6.4" + "@react-native-community/cli-config" "13.6.4" + "@react-native-community/cli-debugger-ui" "13.6.4" + "@react-native-community/cli-doctor" "13.6.4" + "@react-native-community/cli-hermes" "13.6.4" + "@react-native-community/cli-server-api" "13.6.4" + "@react-native-community/cli-tools" "13.6.4" + "@react-native-community/cli-types" "13.6.4" chalk "^4.1.2" commander "^9.4.1" deepmerge "^4.3.0" @@ -2352,12 +2364,17 @@ resolved "https://registry.yarnpkg.com/@react-native-community/masked-view/-/masked-view-0.1.11.tgz#2f4c6e10bee0786abff4604e39a37ded6f3980ce" integrity sha512-rQfMIGSR/1r/SyN87+VD8xHHzDYeHaJq6elOSCAD+0iLagXkSI2pfA0LmSXP21uw5i3em7GkkRjfJ8wpqWXZNw== -"@react-native-menu/menu@^1.0.0": +"@react-native-menu/menu@^1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@react-native-menu/menu/-/menu-1.0.1.tgz#07af963791ac1e5035132151f73ccb5a7ca478c3" integrity sha512-NCGE0ktq481O9sxvKzoLAK27oyfcoJlOTQeTuXMxvaB56rjZm4T1pmPQGWdxhTQQ57Nf7+p6GVLwh0cT3+a5vw== -"@react-native/assets-registry@0.73.1", "@react-native/assets-registry@~0.73.1": +"@react-native/assets-registry@0.74.81": + version "0.74.81" + resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.74.81.tgz#76b17f8f79b366ec4f18a0f4e99b7cd466aa5aa7" + integrity sha512-ms+D6pJ6l30epm53pwnAislW79LEUHJxWfe1Cu0LWyTTBlg1OFoqXfB3eIbpe4WyH3nrlkQAh0yyk4huT2mCvw== + +"@react-native/assets-registry@~0.73.1": version "0.73.1" resolved "https://registry.yarnpkg.com/@react-native/assets-registry/-/assets-registry-0.73.1.tgz#e2a6b73b16c183a270f338dc69c36039b3946e85" integrity sha512-2FgAbU7uKM5SbbW9QptPPZx8N9Ke2L7bsHb+EhAanZjFZunA9PaYtyjUQ1s7HD+zDVqOQIvjkpXSv7Kejd2tqg== @@ -2369,7 +2386,63 @@ dependencies: "@react-native/codegen" "0.73.3" -"@react-native/babel-preset@0.73.21", "@react-native/babel-preset@^0.73.18": +"@react-native/babel-plugin-codegen@0.74.81": + version "0.74.81" + resolved "https://registry.yarnpkg.com/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.74.81.tgz#80484fb9029038694a92193ae2653529e44aab64" + integrity sha512-Bj6g5/xkLMBAdC6665TbD3uCKCQSmLQpGv3gyqya/ydZpv3dDmDXfkGmO4fqTwEMunzu09Sk55st2ipmuXAaAg== + dependencies: + "@react-native/codegen" "0.74.81" + +"@react-native/babel-preset@0.74.81", "@react-native/babel-preset@^0.74.81": + version "0.74.81" + resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.74.81.tgz#80d0b96eef35d671f97eaf223c4d770170d7f23f" + integrity sha512-H80B3Y3lBBVC4x9tceTEQq/04lx01gW6ajWCcVbd7sHvGEAxfMFEZUmVZr0451Cafn02wVnDJ8psto1F+0w5lw== + dependencies: + "@babel/core" "^7.20.0" + "@babel/plugin-proposal-async-generator-functions" "^7.0.0" + "@babel/plugin-proposal-class-properties" "^7.18.0" + "@babel/plugin-proposal-export-default-from" "^7.0.0" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.0" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.0" + "@babel/plugin-proposal-numeric-separator" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.20.0" + "@babel/plugin-proposal-optional-catch-binding" "^7.0.0" + "@babel/plugin-proposal-optional-chaining" "^7.20.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.0" + "@babel/plugin-syntax-export-default-from" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.18.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0" + "@babel/plugin-syntax-optional-chaining" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-async-to-generator" "^7.20.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.20.0" + "@babel/plugin-transform-flow-strip-types" "^7.20.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-private-methods" "^7.22.5" + "@babel/plugin-transform-private-property-in-object" "^7.22.11" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-react-jsx-self" "^7.0.0" + "@babel/plugin-transform-react-jsx-source" "^7.0.0" + "@babel/plugin-transform-runtime" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-sticky-regex" "^7.0.0" + "@babel/plugin-transform-typescript" "^7.5.0" + "@babel/plugin-transform-unicode-regex" "^7.0.0" + "@babel/template" "^7.0.0" + "@react-native/babel-plugin-codegen" "0.74.81" + babel-plugin-transform-flow-enums "^0.0.2" + react-refresh "^0.14.0" + +"@react-native/babel-preset@^0.73.18": version "0.73.21" resolved "https://registry.yarnpkg.com/@react-native/babel-preset/-/babel-preset-0.73.21.tgz#174c16493fa4e311b2f5f0c58d4f3c6a5a68bbea" integrity sha512-WlFttNnySKQMeujN09fRmrdWqh46QyJluM5jdtDNrkl/2Hx6N4XeDUGhABvConeK95OidVO7sFFf7sNebVXogA== @@ -2430,21 +2503,35 @@ mkdirp "^0.5.1" nullthrows "^1.1.1" -"@react-native/community-cli-plugin@0.73.17": - version "0.73.17" - resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.73.17.tgz#37b381a8b503a3296eaa6727e0c52ea8835add28" - integrity sha512-F3PXZkcHg+1ARIr6FRQCQiB7ZAA+MQXGmq051metRscoLvgYJwj7dgC8pvgy0kexzUkHu5BNKrZeySzUft3xuQ== +"@react-native/codegen@0.74.81": + version "0.74.81" + resolved "https://registry.yarnpkg.com/@react-native/codegen/-/codegen-0.74.81.tgz#1025ffd41f2b4710fd700c9e8e85210b9651a7c4" + integrity sha512-hhXo4ccv2lYWaJrZDsdbRTZ5SzSOdyZ0MY6YXwf3xEFLuSunbUMu17Rz5LXemKXlpVx4KEgJ/TDc2pPVaRPZgA== + dependencies: + "@babel/parser" "^7.20.0" + glob "^7.1.1" + hermes-parser "0.19.1" + invariant "^2.2.4" + jscodeshift "^0.14.0" + mkdirp "^0.5.1" + nullthrows "^1.1.1" + +"@react-native/community-cli-plugin@0.74.81": + version "0.74.81" + resolved "https://registry.yarnpkg.com/@react-native/community-cli-plugin/-/community-cli-plugin-0.74.81.tgz#4177207374942c52a86ad52c8c915f46729305ab" + integrity sha512-ezPOwPxbDgrBZLJJMcXryXJXjv3VWt+Mt4jRZiEtvy6pAoi2owSH0b178T5cEZaWsxQN0BbyJ7F/xJsNiF4z0Q== dependencies: - "@react-native-community/cli-server-api" "12.3.6" - "@react-native-community/cli-tools" "12.3.6" - "@react-native/dev-middleware" "0.73.8" - "@react-native/metro-babel-transformer" "0.73.15" + "@react-native-community/cli-server-api" "13.6.4" + "@react-native-community/cli-tools" "13.6.4" + "@react-native/dev-middleware" "0.74.81" + "@react-native/metro-babel-transformer" "0.74.81" chalk "^4.0.0" execa "^5.1.1" metro "^0.80.3" metro-config "^0.80.3" metro-core "^0.80.3" node-fetch "^2.2.0" + querystring "^0.2.1" readline "^1.3.0" "@react-native/debugger-frontend@0.73.3": @@ -2452,7 +2539,31 @@ resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.73.3.tgz#033757614d2ada994c68a1deae78c1dd2ad33c2b" integrity sha512-RgEKnWuoo54dh7gQhV7kvzKhXZEhpF9LlMdZolyhGxHsBqZ2gXdibfDlfcARFFifPIiaZ3lXuOVVa4ei+uPgTw== -"@react-native/dev-middleware@0.73.8", "@react-native/dev-middleware@^0.73.6": +"@react-native/debugger-frontend@0.74.81": + version "0.74.81" + resolved "https://registry.yarnpkg.com/@react-native/debugger-frontend/-/debugger-frontend-0.74.81.tgz#17cefe2b3ff485071bd30d819995867fd145da27" + integrity sha512-HCYF1/88AfixG75558HkNh9wcvGweRaSZGBA71KoZj03umXM8XJy0/ZpacGOml2Fwiqpil72gi6uU+rypcc/vw== + +"@react-native/dev-middleware@0.74.81": + version "0.74.81" + resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.74.81.tgz#120ab62982a48cba90c7724d099ddaa50184c200" + integrity sha512-x2IpvUJN1LJE0WmPsSfQIbQaa9xwH+2VDFOUrzuO9cbQap8rNfZpcvVNbrZgrlKbgS4LXbbsj6VSL8b6SnMKMA== + dependencies: + "@isaacs/ttlcache" "^1.4.1" + "@react-native/debugger-frontend" "0.74.81" + "@rnx-kit/chromium-edge-launcher" "^1.0.0" + chrome-launcher "^0.15.2" + connect "^3.6.5" + debug "^2.2.0" + node-fetch "^2.2.0" + nullthrows "^1.1.1" + open "^7.0.3" + selfsigned "^2.4.1" + serve-static "^1.13.1" + temp-dir "^2.0.0" + ws "^6.2.2" + +"@react-native/dev-middleware@^0.73.6": version "0.73.8" resolved "https://registry.yarnpkg.com/@react-native/dev-middleware/-/dev-middleware-0.73.8.tgz#2e43722a00c7b8db753f747f40267cbad6caba4d" integrity sha512-oph4NamCIxkMfUL/fYtSsE+JbGOnrlawfQ0kKtDQ5xbOjPKotKoXqrs1eGwozNKv7FfQ393stk1by9a6DyASSg== @@ -2469,24 +2580,24 @@ temp-dir "^2.0.0" ws "^6.2.2" -"@react-native/gradle-plugin@0.73.4": - version "0.73.4" - resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.73.4.tgz#aa55784a8c2b471aa89934db38c090d331baf23b" - integrity sha512-PMDnbsZa+tD55Ug+W8CfqXiGoGneSSyrBZCMb5JfiB3AFST3Uj5e6lw8SgI/B6SKZF7lG0BhZ6YHZsRZ5MlXmg== +"@react-native/gradle-plugin@0.74.81": + version "0.74.81" + resolved "https://registry.yarnpkg.com/@react-native/gradle-plugin/-/gradle-plugin-0.74.81.tgz#aac01999b1005bba3213f504deee7efaadb62c1e" + integrity sha512-7YQ4TLnqfe2kplWWzBWO6k0rPSrWEbuEiRXSJNZQCtCk+t2YX985G62p/9jWm3sGLN4UTcpDXaFNTTPBvlycoQ== -"@react-native/js-polyfills@0.73.1": - version "0.73.1" - resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.73.1.tgz#730b0a7aaab947ae6f8e5aa9d995e788977191ed" - integrity sha512-ewMwGcumrilnF87H4jjrnvGZEaPFCAC4ebraEK+CurDDmwST/bIicI4hrOAv+0Z0F7DEK4O4H7r8q9vH7IbN4g== +"@react-native/js-polyfills@0.74.81": + version "0.74.81" + resolved "https://registry.yarnpkg.com/@react-native/js-polyfills/-/js-polyfills-0.74.81.tgz#64780497be4ecbff1b27076294e3ebd7df1ba485" + integrity sha512-o4MiR+/kkHoeoQ/zPwt81LnTm6pqdg0wOhU7S7vIZUqzJ7YUpnpaAvF+/z7HzUOPudnavoCN0wvcZPe/AMEyCA== -"@react-native/metro-babel-transformer@0.73.15": - version "0.73.15" - resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.73.15.tgz#c516584dde62d65a46668074084359c03e6a50f1" - integrity sha512-LlkSGaXCz+xdxc9819plmpsl4P4gZndoFtpjN3GMBIu6f7TBV0GVbyJAU4GE8fuAWPVSVL5ArOcdkWKSbI1klw== +"@react-native/metro-babel-transformer@0.74.81": + version "0.74.81" + resolved "https://registry.yarnpkg.com/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.74.81.tgz#f724eab91e6de82f8d098e6de57f25bb7501d2d6" + integrity sha512-PVcMjj23poAK6Uemflz4MIJdEpONpjqF7JASNqqQkY6wfDdaIiZSNk8EBCWKb0t7nKqhMvtTq11DMzYJ0JFITg== dependencies: "@babel/core" "^7.20.0" - "@react-native/babel-preset" "0.73.21" - hermes-parser "0.15.0" + "@react-native/babel-preset" "0.74.81" + hermes-parser "0.19.1" nullthrows "^1.1.1" "@react-native/normalize-color@^2.0.0", "@react-native/normalize-color@^2.1.0": @@ -2494,15 +2605,15 @@ resolved "https://registry.yarnpkg.com/@react-native/normalize-color/-/normalize-color-2.1.0.tgz#939b87a9849e81687d3640c5efa2a486ac266f91" integrity sha512-Z1jQI2NpdFJCVgpY+8Dq/Bt3d+YUi1928Q+/CZm/oh66fzM0RUl54vvuXlPJKybH4pdCZey1eDTPaLHkMPNgWA== -"@react-native/normalize-colors@0.73.2", "@react-native/normalize-colors@^0.73.0": - version "0.73.2" - resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.73.2.tgz#cc8e48fbae2bbfff53e12f209369e8d2e4cf34ec" - integrity sha512-bRBcb2T+I88aG74LMVHaKms2p/T8aQd8+BZ7LuuzXlRfog1bMWWn/C5i0HVuvW4RPtXQYgIlGiXVDy9Ir1So/w== +"@react-native/normalize-colors@0.74.81": + version "0.74.81" + resolved "https://registry.yarnpkg.com/@react-native/normalize-colors/-/normalize-colors-0.74.81.tgz#0b7c440b6e126f79036cbe74a88791aba72b9fcf" + integrity sha512-g3YvkLO7UsSWiDfYAU+gLhRHtEpUyz732lZB+N8IlLXc5MnfXHC8GKneDGY3Mh52I3gBrs20o37D5viQX9E1CA== -"@react-native/virtualized-lists@0.73.4": - version "0.73.4" - resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.73.4.tgz#640e594775806f63685435b5d9c3d05c378ccd8c" - integrity sha512-HpmLg1FrEiDtrtAbXiwCgXFYyloK/dOIPIuWW3fsqukwJEWAiTzm1nXGJ7xPU5XTHiWZ4sKup5Ebaj8z7iyWog== +"@react-native/virtualized-lists@0.74.81": + version "0.74.81" + resolved "https://registry.yarnpkg.com/@react-native/virtualized-lists/-/virtualized-lists-0.74.81.tgz#8e43d4c72ec561754491eae731f40877f03d05fb" + integrity sha512-5jF9S10Ug2Wl+L/0+O8WmbC726sMMX8jk/1JrvDDK+0DRLMobfjLc1L26fONlVBF7lE5ctqvKZ9TlKdhPTNOZg== dependencies: invariant "^2.2.4" nullthrows "^1.1.1" @@ -2652,6 +2763,18 @@ dependencies: web-streams-polyfill "^3.1.1" +"@rnx-kit/chromium-edge-launcher@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@rnx-kit/chromium-edge-launcher/-/chromium-edge-launcher-1.0.0.tgz#c0df8ea00a902c7a417cd9655aab06de398b939c" + integrity sha512-lzD84av1ZQhYUS+jsGqJiCMaJO2dn9u+RTT9n9q6D3SaKVwWqv+7AoRKqBu19bkwyE+iFRl1ymr40QS90jVFYg== + dependencies: + "@types/node" "^18.0.0" + escape-string-regexp "^4.0.0" + is-wsl "^2.2.0" + lighthouse-logger "^1.0.0" + mkdirp "^1.0.4" + rimraf "^3.0.2" + "@rushstack/eslint-patch@^1.3.3": version "1.10.2" resolved "https://registry.yarnpkg.com/@rushstack/eslint-patch/-/eslint-patch-1.10.2.tgz#053f1540703faa81dea2966b768ee5581c66aeda" @@ -2933,6 +3056,13 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== +"@types/node-forge@^1.3.0": + version "1.3.11" + resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.11.tgz#0972ea538ddb0f4d9c2fa0ec5db5724773a604da" + integrity sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ== + dependencies: + "@types/node" "*" + "@types/node@*", "@types/node@^20": version "20.12.7" resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.7.tgz#04080362fa3dd6c5822061aa3124f5c152cff384" @@ -2940,6 +3070,13 @@ dependencies: undici-types "~5.26.4" +"@types/node@^18.0.0": + version "18.19.31" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.31.tgz#b7d4a00f7cb826b60a543cebdbda5d189aaecdcd" + integrity sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA== + dependencies: + undici-types "~5.26.4" + "@types/prop-types@*": version "15.7.12" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.12.tgz#12bb1e2be27293c1406acb6af1c3f3a1481d98c6" @@ -4702,15 +4839,6 @@ depd@2.0.0: resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== -deprecated-react-native-prop-types@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-5.0.0.tgz#02a12f090da7bd9e8c3ac53c31cf786a1315d302" - integrity sha512-cIK8KYiiGVOFsKdPMmm1L3tA/Gl+JopXL6F5+C7x39MyPsQYnP57Im/D6bNUzcborD7fcMwiwZqcBdBXXZucYQ== - dependencies: - "@react-native/normalize-colors" "^0.73.0" - invariant "^2.2.4" - prop-types "^15.8.1" - dequal@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/dequal/-/dequal-2.0.3.tgz#2644214f1997d39ed0ee0ece72335490a7ac67be" @@ -5073,12 +5201,12 @@ escodegen@^2.0.0: optionalDependencies: source-map "~0.6.1" -eslint-config-next@14.2.1: - version "14.2.1" - resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.2.1.tgz#b19b53ca3d10379a98bc9bf497dbea651dfcd070" - integrity sha512-BgD0kPCWMlqoItRf3xe9fG0MqwObKfVch+f2ccwDpZiCJA8ghkz2wrASH+bI6nLZzGcOJOpMm1v1Q1euhfpt4Q== +eslint-config-next@14.2.3: + version "14.2.3" + resolved "https://registry.yarnpkg.com/eslint-config-next/-/eslint-config-next-14.2.3.tgz#2fb0f7c4eccda530a4b5054438162b2303786d4f" + integrity sha512-ZkNztm3Q7hjqvB1rRlOX8P9E/cXRL9ajRcs8jufEtwMfTVYRqnmtnaSu57QqHyBlovMuiB8LEzfLBkh5RYV6Fg== dependencies: - "@next/eslint-plugin-next" "14.2.1" + "@next/eslint-plugin-next" "14.2.3" "@rushstack/eslint-patch" "^1.3.3" "@typescript-eslint/parser" "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0" eslint-import-resolver-node "^0.3.6" @@ -5418,7 +5546,7 @@ expect@^29.7.0: jest-message-util "^29.7.0" jest-util "^29.7.0" -expo-application@^5.8.3, expo-application@~5.8.0: +expo-application@^5.8.4, expo-application@~5.8.0: version "5.8.4" resolved "https://registry.yarnpkg.com/expo-application/-/expo-application-5.8.4.tgz#9c43c4a778a5ccf5a88afb36d6547dfdc34b5494" integrity sha512-mH0gSlFzMuiT20TkZnBppzUtdF6TFHwcaTRnvkSZanN9iTOeEEfQQ60hHT4lBizHjFWRs/QYZVtXGvkQ/cyMpg== @@ -5590,7 +5718,7 @@ expo-status-bar@~1.11.1: resolved "https://registry.yarnpkg.com/expo-status-bar/-/expo-status-bar-1.11.1.tgz#a11318741d361048c11db2b16c4364a79a74af30" integrity sha512-ddQEtCOgYHTLlFUe/yH67dDBIoct5VIULthyT3LRJbEwdpzAgueKsX2FYK02ldh440V87PWKCamh7R9evk1rrg== -expo-system-ui@~2.9.3: +expo-system-ui@~2.9.4: version "2.9.4" resolved "https://registry.yarnpkg.com/expo-system-ui/-/expo-system-ui-2.9.4.tgz#f5f210805527e728f47edcd6a5aba3c1e83c9465" integrity sha512-ExJ8AzEZjb/zbg6nRLrN/mqxWr6e4fAcT0LBN/YvPZljbMo23HU+/lPy0/YctF1tRRvQ3Z95ABSNjnx9ajQBjg== @@ -5647,7 +5775,7 @@ fast-diff@^1.1.2: resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== -fast-glob@^3.2.12, fast-glob@^3.2.5, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1: +fast-glob@^3.2.12, fast-glob@^3.2.5, fast-glob@^3.2.9, fast-glob@^3.3.0, fast-glob@^3.3.1, fast-glob@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== @@ -6189,22 +6317,22 @@ hasown@^2.0.0, hasown@^2.0.1, hasown@^2.0.2: dependencies: function-bind "^1.1.2" -hermes-estree@0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.15.0.tgz#e32f6210ab18c7b705bdcb375f7700f2db15d6ba" - integrity sha512-lLYvAd+6BnOqWdnNbP/Q8xfl8LOGw4wVjfrNd9Gt8eoFzhNBRVD95n4l2ksfMVOoxuVyegs85g83KS9QOsxbVQ== +hermes-estree@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.19.1.tgz#d5924f5fac2bf0532547ae9f506d6db8f3c96392" + integrity sha512-daLGV3Q2MKk8w4evNMKwS8zBE/rcpA800nu1Q5kM08IKijoSnPe9Uo1iIxzPKRkn95IxxsgBMPeYHt3VG4ej2g== hermes-estree@0.20.1: version "0.20.1" resolved "https://registry.yarnpkg.com/hermes-estree/-/hermes-estree-0.20.1.tgz#0b9a544cf883a779a8e1444b915fa365bef7f72d" integrity sha512-SQpZK4BzR48kuOg0v4pb3EAGNclzIlqMj3Opu/mu7bbAoFw6oig6cEt/RAi0zTFW/iW6Iz9X9ggGuZTAZ/yZHg== -hermes-parser@0.15.0: - version "0.15.0" - resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.15.0.tgz#f611a297c2a2dbbfbce8af8543242254f604c382" - integrity sha512-Q1uks5rjZlE9RjMMjSUCkGrEIPI5pKJILeCtK1VmTj7U4pf3wVPoo+cxfu+s4cBAPy2JzikIIdCZgBoR6x7U1Q== +hermes-parser@0.19.1: + version "0.19.1" + resolved "https://registry.yarnpkg.com/hermes-parser/-/hermes-parser-0.19.1.tgz#1044348097165b7c93dc198a80b04ed5130d6b1a" + integrity sha512-Vp+bXzxYJWrpEuJ/vXxUsLnt0+y4q9zyi4zUlkLqD8FKv4LjIfOvP69R/9Lty3dCyKh0E2BU7Eypqr63/rKT/A== dependencies: - hermes-estree "0.15.0" + hermes-estree "0.19.1" hermes-parser@0.20.1: version "0.20.1" @@ -8184,12 +8312,12 @@ nested-error-stacks@~2.0.1: resolved "https://registry.yarnpkg.com/nested-error-stacks/-/nested-error-stacks-2.0.1.tgz#d2cc9fc5235ddb371fc44d506234339c8e4b0a4b" integrity sha512-SrQrok4CATudVzBS7coSz26QRSmlK9TzzoFbeKfcPBUFPjcQM9Rqvr/DlJkOrwI/0KcgvMub1n1g5Jt9EgRn4A== -next@14.2.1: - version "14.2.1" - resolved "https://registry.yarnpkg.com/next/-/next-14.2.1.tgz#081509478156407e4c181ad4791fea0a43c6347d" - integrity sha512-SF3TJnKdH43PMkCcErLPv+x/DY1YCklslk3ZmwaVoyUfDgHKexuKlf9sEfBQ69w+ue8jQ3msLb+hSj1T19hGag== +next@14.2.3: + version "14.2.3" + resolved "https://registry.yarnpkg.com/next/-/next-14.2.3.tgz#f117dd5d5f20c307e7b8e4f9c1c97d961008925d" + integrity sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A== dependencies: - "@next/env" "14.2.1" + "@next/env" "14.2.3" "@swc/helpers" "0.5.5" busboy "1.6.0" caniuse-lite "^1.0.30001579" @@ -8197,15 +8325,15 @@ next@14.2.1: postcss "8.4.31" styled-jsx "5.1.1" optionalDependencies: - "@next/swc-darwin-arm64" "14.2.1" - "@next/swc-darwin-x64" "14.2.1" - "@next/swc-linux-arm64-gnu" "14.2.1" - "@next/swc-linux-arm64-musl" "14.2.1" - "@next/swc-linux-x64-gnu" "14.2.1" - "@next/swc-linux-x64-musl" "14.2.1" - "@next/swc-win32-arm64-msvc" "14.2.1" - "@next/swc-win32-ia32-msvc" "14.2.1" - "@next/swc-win32-x64-msvc" "14.2.1" + "@next/swc-darwin-arm64" "14.2.3" + "@next/swc-darwin-x64" "14.2.3" + "@next/swc-linux-arm64-gnu" "14.2.3" + "@next/swc-linux-arm64-musl" "14.2.3" + "@next/swc-linux-x64-gnu" "14.2.3" + "@next/swc-linux-x64-musl" "14.2.3" + "@next/swc-win32-arm64-msvc" "14.2.3" + "@next/swc-win32-ia32-msvc" "14.2.3" + "@next/swc-win32-x64-msvc" "14.2.3" nice-try@^1.0.4: version "1.0.5" @@ -8244,7 +8372,7 @@ node-fetch@^2.2.0, node-fetch@^2.6.0, node-fetch@^2.6.1, node-fetch@^2.6.12, nod dependencies: whatwg-url "^5.0.0" -node-forge@^1.2.1, node-forge@^1.3.1: +node-forge@^1, node-forge@^1.2.1, node-forge@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== @@ -8995,6 +9123,11 @@ query-string@^7.1.0, query-string@^7.1.3: split-on-first "^1.0.0" strict-uri-encode "^2.0.0" +querystring@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/querystring/-/querystring-0.2.1.tgz#40d77615bb09d16902a85c3e38aa8b5ed761c2dd" + integrity sha512-wkvS7mL/JMugcup3/rMitHmd9ecIGd2lhFhK9N3UUQ450h66d1r3Y9nvXzQAW1Lq+wyx61k/1pfKS5KuKiyEbg== + querystringify@^2.1.1: version "2.2.0" resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" @@ -9027,10 +9160,10 @@ rc@~1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-devtools-core@^4.27.7: - version "4.28.5" - resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.28.5.tgz#c8442b91f068cdf0c899c543907f7f27d79c2508" - integrity sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA== +react-devtools-core@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-5.1.0.tgz#3396494ac94b21602cac4fd657d600e0b52f4a0b" + integrity sha512-NRtLBqYVLrIY+lOa2oTpFiAhI7Hru0AUXI0tP9neCyaPPAzlZyeH0i+VZ0shIyRTJbpvyqbD/uCsewA2hpfZHw== dependencies: shell-quote "^1.6.1" ws "^7" @@ -9084,6 +9217,11 @@ react-is@^17.0.1: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== +react-is@^18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + react-native-calendars@^1.1304.1: version "1.1304.1" resolved "https://registry.yarnpkg.com/react-native-calendars/-/react-native-calendars-1.1304.1.tgz#a09f7f8eee84d8634c3fe2de5e293fa7e8f12077" @@ -9169,10 +9307,10 @@ react-native-safe-area-context@^4.9.0: resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-4.9.0.tgz#21a570ca3594cb4259ba65f93befaa60d91bcbd0" integrity sha512-/OJD9Pb8IURyvn+1tWTszWPJqsbZ4hyHBU9P0xhOmk7h5owSuqL0zkfagU0pg7Vh0G2NKQkaPpUKUMMCUMDh/w== -react-native-screens@~3.30.1: - version "3.30.1" - resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-3.30.1.tgz#254f5cbbeed649492da112756f85ecae3ccf313e" - integrity sha512-/muEvjocCtFb+j5J3YmLvB25+f4rIU8hnnxgGTkXcAf2omPBY8uhPjJaaFUlvj64VEoEzJcRpugbXWsjfPPIFg== +react-native-screens@~3.31.1: + version "3.31.1" + resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-3.31.1.tgz#909a890f669e32b0fb1b1410278b71ad2f8238f6" + integrity sha512-8fRW362pfZ9y4rS8KY5P3DFScrmwo/vu1RrRMMx0PNHbeC9TLq0Kw1ubD83591yz64gLNHFLTVkTJmWeWCXKtQ== dependencies: react-freeze "^1.0.0" warn-once "^0.1.0" @@ -9192,10 +9330,10 @@ react-native-svg-transformer@^1.3.0: "@svgr/plugin-svgo" "^8.1.0" path-dirname "^1.0.2" -react-native-svg@^15.1.0: - version "15.1.0" - resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-15.1.0.tgz#07c75f29b1d641faba50144c7ccd21604b368420" - integrity sha512-p0Sx0EpQNk1nu6UcMEiB8K9P04n3J7s+pNYUwf1d/Yz+v4hk961VjuVqjyndgiEbHZyWiKWLZRVNuvLpwjPY2A== +react-native-svg@^15.2.0: + version "15.2.0" + resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-15.2.0.tgz#9561a6b3bd6b44689f437ba13182afee33bd5557" + integrity sha512-R0E6IhcJfVLsL0lRmnUSm72QO+mTqcAOM5Jb8FVGxJqX3NfJMlMP0YyvcajZiaRR8CqQUpEoqrY25eyZb006kw== dependencies: css-select "^5.1.0" css-tree "^1.1.3" @@ -9219,28 +9357,27 @@ react-native-web@~0.19.6: postcss-value-parser "^4.2.0" styleq "^0.1.3" -react-native@0.73.6: - version "0.73.6" - resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.73.6.tgz#ed4c675e205a34bd62c4ce8b9bd1ca5c85126d5b" - integrity sha512-oqmZe8D2/VolIzSPZw+oUd6j/bEmeRHwsLn1xLA5wllEYsZ5zNuMsDus235ONOnCRwexqof/J3aztyQswSmiaA== +react-native@0.74.0: + version "0.74.0" + resolved "https://registry.yarnpkg.com/react-native/-/react-native-0.74.0.tgz#9f0901139424152216e1ae1b32773787a0158d41" + integrity sha512-Vpp9WPmkCm4TUH5YDxwQhqktGVon/yLpjbTgjgLqup3GglOgWagYCX3MlmK1iksIcqtyMJHMEWa+UEzJ3G9T8w== dependencies: "@jest/create-cache-key-function" "^29.6.3" - "@react-native-community/cli" "12.3.6" - "@react-native-community/cli-platform-android" "12.3.6" - "@react-native-community/cli-platform-ios" "12.3.6" - "@react-native/assets-registry" "0.73.1" - "@react-native/codegen" "0.73.3" - "@react-native/community-cli-plugin" "0.73.17" - "@react-native/gradle-plugin" "0.73.4" - "@react-native/js-polyfills" "0.73.1" - "@react-native/normalize-colors" "0.73.2" - "@react-native/virtualized-lists" "0.73.4" + "@react-native-community/cli" "13.6.4" + "@react-native-community/cli-platform-android" "13.6.4" + "@react-native-community/cli-platform-ios" "13.6.4" + "@react-native/assets-registry" "0.74.81" + "@react-native/codegen" "0.74.81" + "@react-native/community-cli-plugin" "0.74.81" + "@react-native/gradle-plugin" "0.74.81" + "@react-native/js-polyfills" "0.74.81" + "@react-native/normalize-colors" "0.74.81" + "@react-native/virtualized-lists" "0.74.81" abort-controller "^3.0.0" anser "^1.4.9" ansi-regex "^5.0.0" base64-js "^1.5.1" chalk "^4.0.0" - deprecated-react-native-prop-types "^5.0.0" event-target-shim "^5.0.1" flow-enums-runtime "^0.0.6" invariant "^2.2.4" @@ -9253,7 +9390,7 @@ react-native@0.73.6: nullthrows "^1.1.1" pretty-format "^26.5.2" promise "^8.3.0" - react-devtools-core "^4.27.7" + react-devtools-core "^5.0.0" react-refresh "^0.14.0" react-shallow-renderer "^16.15.0" regenerator-runtime "^0.13.2" @@ -9302,6 +9439,15 @@ react-test-renderer@18.2.0: react-shallow-renderer "^16.15.0" scheduler "^0.23.0" +react-test-renderer@18.3.1: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-18.3.1.tgz#e693608a1f96283400d4a3afead6893f958b80b4" + integrity sha512-KkAgygexHUkQqtvvx/otwxtuFu5cVjfzTCtjXLH9boS19/Nbtg84zS7wIQn39G8IlrhThBpQsMKkq5ZHZIYFXA== + dependencies: + react-is "^18.3.1" + react-shallow-renderer "^16.15.0" + scheduler "^0.23.2" + react-timer-mixin@^0.13.3: version "0.13.4" resolved "https://registry.yarnpkg.com/react-timer-mixin/-/react-timer-mixin-0.13.4.tgz#75a00c3c94c13abe29b43d63b4c65a88fc8264d3" @@ -9677,6 +9823,13 @@ scheduler@^0.23.0: dependencies: loose-envify "^1.1.0" +scheduler@^0.23.2: + version "0.23.2" + resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.2.tgz#414ba64a3b282892e944cf2108ecc078d115cdc3" + integrity sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ== + dependencies: + loose-envify "^1.1.0" + schema-utils@^4.0.1: version "4.2.0" resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.2.0.tgz#70d7c93e153a273a805801882ebd3bff20d89c8b" @@ -9687,6 +9840,14 @@ schema-utils@^4.0.1: ajv-formats "^2.1.1" ajv-keywords "^5.1.0" +selfsigned@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== + dependencies: + "@types/node-forge" "^1.3.0" + node-forge "^1" + semver@7.3.2: version "7.3.2" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" @@ -10334,7 +10495,7 @@ synckit@^0.8.6: "@pkgr/core" "^0.1.0" tslib "^2.6.2" -tailwind-merge@^2.2.2: +tailwind-merge@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/tailwind-merge/-/tailwind-merge-2.3.0.tgz#27d2134fd00a1f77eca22bcaafdd67055917d286" integrity sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA== @@ -10370,7 +10531,7 @@ tailwindcss@3.3.2: resolve "^1.22.2" sucrase "^3.32.0" -tailwindcss@^3.4.3: +tailwindcss@^3.4.1, tailwindcss@^3.4.3: version "3.4.3" resolved "https://registry.yarnpkg.com/tailwindcss/-/tailwindcss-3.4.3.tgz#be48f5283df77dfced705451319a5dffb8621519" integrity sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A== @@ -11294,10 +11455,10 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zod@^3.22.4: - version "3.23.0" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.0.tgz#a25dab5052702834233e0041e9dd8b6a8480e744" - integrity sha512-OFLT+LTocvabn6q76BTwVB0hExEBS0IduTr3cqZyMqEDbOnYmcU+y0tUAYbND4uwclpBGi4I4UUBGzylWpjLGA== +zod@^3.23.4: + version "3.23.4" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.4.tgz#c63805b2f39e10d4ab3d55eb3c8cdb472c79dfb1" + integrity sha512-/AtWOKbBgjzEYYQRNfoGKHObgfAZag6qUJX1VbHo2PRBgS+wfWagEY2mizjfyAPcGesrJOcx/wcl0L9WnVrHFw== zustand@^4.5.2: version "4.5.2" From 1df1a105849401ecfb8e84f93e03e0addbee3884 Mon Sep 17 00:00:00 2001 From: David Oduneye <44040421+DOOduneye@users.noreply.github.com> Date: Mon, 29 Apr 2024 07:15:23 -0700 Subject: [PATCH 4/8] doc: updated cli README.md (#690) --- cli/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/cli/README.md b/cli/README.md index 3539602e7..7ec38eb4a 100644 --- a/cli/README.md +++ b/cli/README.md @@ -16,7 +16,6 @@ The SAC CLI is a tool designed to help manage and automate tasks for the Generat 3. [Available Commands](#available-commands) 4. [Command Aliases](#command-aliases) 5. [Dependencies](#dependencies) -6. [License](#license) ## Installation @@ -30,7 +29,7 @@ To install the SAC CLI, clone the repository and run the following script from t To use the SAC CLI, you can run it with various flags or commands: -``` +```bash sac [flags] sac [command] ``` From b613b9ca682aea1e5e8296b572c3ccec5500b318 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 10:31:08 -0400 Subject: [PATCH 5/8] Chore(deps): Bump expo from 50.0.15 to 50.0.17 in /frontend/mobile (#692) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- frontend/mobile/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/mobile/package.json b/frontend/mobile/package.json index 69570b820..051615379 100644 --- a/frontend/mobile/package.json +++ b/frontend/mobile/package.json @@ -32,7 +32,7 @@ "clsx": "^2.1.0", "date-fns": "^3.6.0", "eslint": "^8.56.0", - "expo": "^50.0.14", + "expo": "^50.0.17", "expo-application": "^5.8.4", "expo-asset": "~9.0.2", "expo-auth-session": "^5.4.0", From bbb208e6078c2ee92b8660fb8e9bf96a8d7bd6f0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 10:32:49 -0400 Subject: [PATCH 6/8] Chore(deps): Bump react-native-web from 0.19.10 to 0.19.11 in /frontend/mobile (#693) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: David Oduneye <44040421+DOOduneye@users.noreply.github.com> --- frontend/mobile/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/mobile/package.json b/frontend/mobile/package.json index 051615379..5feb45124 100644 --- a/frontend/mobile/package.json +++ b/frontend/mobile/package.json @@ -66,7 +66,7 @@ "react-native-size-matters": "^0.4.2", "react-native-svg": "^15.2.0", "react-native-svg-transformer": "^1.3.0", - "react-native-web": "~0.19.6", + "react-native-web": "~0.19.11", "react-query": "^3.39.3", "react-redux": "^9.1.1", "tailwind-merge": "^2.3.0", From adf6b6daa3ce604decb00b86068883d2592e3667 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 10:36:06 -0400 Subject: [PATCH 7/8] Chore(deps): Bump @tanstack/react-query from 5.29.2 to 5.32.0 in /frontend/mobile (#694) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: David Oduneye <44040421+DOOduneye@users.noreply.github.com> --- frontend/mobile/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/mobile/package.json b/frontend/mobile/package.json index 5feb45124..0025ba2f4 100644 --- a/frontend/mobile/package.json +++ b/frontend/mobile/package.json @@ -24,7 +24,7 @@ "@react-navigation/stack": "^6.3.29", "@reduxjs/toolkit": "^2.2.3", "@sac/lib": "*", - "@tanstack/react-query": "^5.29.0", + "@tanstack/react-query": "^5.32.0", "@types/uuid": "^9.0.8", "axios": "^1.6.8", "calendarize": "^1.1.1", From 5da5d92aba5f4f42f2e32643d9ccedcb4015d54c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 11:09:01 -0400 Subject: [PATCH 8/8] Chore(deps): Bump react-dom from 18.2.0 to 18.3.1 in /frontend/mobile (#695) Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: David Oduneye <44040421+DOOduneye@users.noreply.github.com> --- frontend/mobile/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/mobile/package.json b/frontend/mobile/package.json index 0025ba2f4..0306e6880 100644 --- a/frontend/mobile/package.json +++ b/frontend/mobile/package.json @@ -49,7 +49,7 @@ "install": "^0.13.0", "nativewind": "^2.0.11", "react": "18.2.0", - "react-dom": "18.2.0", + "react-dom": "18.3.1", "react-hook-form": "^7.51.2", "react-native": "0.74.0", "react-native-calendars": "^1.1304.1",