diff --git a/VERSION b/VERSION index be386c9ede..85e60ed180 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.33.0 +0.34.0 diff --git a/backend/sources/facebook/events-router/src/main/java/co/airy/core/sources/facebook/MessageMapper.java b/backend/sources/facebook/events-router/src/main/java/co/airy/core/sources/facebook/MessageMapper.java index d497d7adde..9993961a56 100644 --- a/backend/sources/facebook/events-router/src/main/java/co/airy/core/sources/facebook/MessageMapper.java +++ b/backend/sources/facebook/events-router/src/main/java/co/airy/core/sources/facebook/MessageMapper.java @@ -73,7 +73,7 @@ public List> getRecords(Event event, } else if (appId != null && !appId.equals(this.facebookAppId)) { // Third party app senderId = appId; - } else if (appId == null && !"instagram".equals(channel.getSource())) { + } else if (appId == null) { // Sent by Facebook moderator via Facebook inbox senderId = getSourceConversationId(rootNode); } else { @@ -107,14 +107,14 @@ public List> getRecords(Event event, .ifPresent(referralNode -> headers.put("postback.referral", referralNode.toString())); // As a content hash use the Facebook message id if present and the whole content body if not - final String contentId = Stream.of(message, postbackNode) + final Optional facebookMessageId = Stream.of(message, postbackNode) .filter(Objects::nonNull) .findFirst() .map((node) -> node.get("mid")) - .map(JsonNode::textValue) - .orElse(payload); + .map(JsonNode::textValue); - final String messageId = UUIDv5.fromNamespaceAndName(channel.getId(), contentId).toString(); + final String messageId = facebookMessageId.flatMap(getMessageId) + .orElseGet(() -> UUIDv5.fromNamespaceAndName(channel.getId(), payload).toString()); return List.of(new ProducerRecord<>(applicationCommunicationMessages, messageId, Message.newBuilder() .setSource(channel.getSource()) diff --git a/cli/integration/version_test.go b/cli/integration/version_test.go index e9075a1f75..5fdbb14541 100644 --- a/cli/integration/version_test.go +++ b/cli/integration/version_test.go @@ -12,7 +12,7 @@ func TestVersion(t *testing.T) { } // https://semver.org/#is-there-a-suggested-regular-expression-regex-to-check-a-semver-string - validVersionString := regexp.MustCompile(`^Version: (develop|(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?), GitCommit: [0-9a-f]{5,40}\n$`) + validVersionString := regexp.MustCompile(`Version: (develop|(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-((?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\.(?:0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?), GitCommit: [0-9a-f]{5,40}\n$`) if !validVersionString.MatchString(actual) { t.Errorf("expected %s to be a valid version but was not", actual) diff --git a/cli/pkg/cmd/root.go b/cli/pkg/cmd/root.go index 48ebcd08ab..e85caf7e56 100644 --- a/cli/pkg/cmd/root.go +++ b/cli/pkg/cmd/root.go @@ -9,7 +9,12 @@ import ( "cli/pkg/cmd/upgrade" "cli/pkg/workspace" "fmt" + "io/ioutil" + "net/http" "os" + "regexp" + "strings" + "time" "github.com/spf13/cobra" "github.com/spf13/viper" @@ -17,6 +22,7 @@ import ( const cliConfigFileName = "cli.yaml" const cliConfigDirName = ".airy" +const cliVersionAPI = "https://airy-core-binaries.s3.amazonaws.com/stable.txt" var cliConfigDir string var Version string @@ -31,9 +37,37 @@ var RootCmd = &cobra.Command{ if cmd.Name() != "create" && cmd.Name() != "version" { workspace.Init(cliConfigDir) } + if !strings.Contains(Version, "alpha") { + cliVersion() + } }, } +func cliVersion() { + latest_stable := Version + client := http.Client{ + Timeout: time.Second, + } + + resp, err := client.Get(cliVersionAPI) + if err != nil { + return + } else { + body, _ := ioutil.ReadAll(resp.Body) + defer resp.Body.Close() + temp := strings.TrimSuffix(string(body), "\n") + match, _ := regexp.MatchString("^[0-9]+\\.[0-9]+\\.[0-9]+$", temp) + if match { + latest_stable = temp + } else { + return + } + } + if Version != latest_stable { + fmt.Printf("Warning: Your CLI version is out of date. Please upgrade to the latest stable version: %s. \n\n", latest_stable) + } +} + var versionCmd = &cobra.Command{ Use: "version", Short: "Prints version information", diff --git a/cli/pkg/helm/helm.go b/cli/pkg/helm/helm.go index aadc801c9e..e4a75d4682 100644 --- a/cli/pkg/helm/helm.go +++ b/cli/pkg/helm/helm.go @@ -1,8 +1,10 @@ package helm import ( + "bytes" "context" "fmt" + "io" "io/ioutil" "github.com/airyhq/airy/infrastructure/lib/go/k8s/util" @@ -89,6 +91,7 @@ func (h *Helm) UpgradeCharts() error { chartURL := "https://airy-core-helm-charts.s3.amazonaws.com/stable/airy-" + h.version + ".tgz" return h.runHelm(append([]string{"upgrade", "--values", "/apps/config/airy-config-map.yaml", + "--namespace", h.namespace, "--timeout", "10m0s", "airy", chartURL})) } @@ -100,6 +103,7 @@ func (h *Helm) runHelm(args []string) error { h.cleanupJob() jobsClient := h.clientset.BatchV1().Jobs(h.namespace) + podsClient := h.clientset.CoreV1().Pods(h.namespace) job := &batchv1.Job{ ObjectMeta: metav1.ObjectMeta{ @@ -115,7 +119,7 @@ func (h *Helm) runHelm(args []string) error { Name: "helm-runner", Image: "alpine/helm:3.6.3", Args: args, - ImagePullPolicy: corev1.PullAlways, + ImagePullPolicy: corev1.PullIfNotPresent, VolumeMounts: []corev1.VolumeMount{ { Name: "core-config", @@ -162,14 +166,30 @@ func (h *Helm) runHelm(args []string) error { switch event.Type { case watch.Error: return fmt.Errorf("helm run failed with error %v", event.Object) - case watch.Added: case watch.Modified: job, _ := event.Object.(*batchv1.Job) if job.Status.Succeeded == 1 { return nil } else if job.Status.Failed == 1 { + opts := v1.ListOptions{ + LabelSelector: "job-name=helm-runner", + } + pods, err := podsClient.List(context.TODO(), opts) + if err != nil { + fmt.Println(err) + } + + for _, pod := range pods.Items { + fmt.Println("Logs of helm-runner pod:") + fmt.Println(getPodLogs(pod, h.clientset)) + } + + for _, c := range job.Status.Conditions { + return fmt.Errorf("Helm job failed: %s", c.Reason) + } return fmt.Errorf("helm run failed with error %v", event.Object) } + default: } } @@ -214,3 +234,20 @@ func (h *Helm) cleanupJob() error { PropagationPolicy: &deletionPolicy, }) } + +func getPodLogs(pod corev1.Pod, clientset *kubernetes.Clientset) string { + podLogOpts := corev1.PodLogOptions{} + req := clientset.CoreV1().Pods(pod.Namespace).GetLogs(pod.Name, &podLogOpts) + podLogs, err := req.Stream(context.TODO()) + if err != nil { + return "error in opening stream" + } + defer podLogs.Close() + + buf := new(bytes.Buffer) + _, err = io.Copy(buf, podLogs) + if err != nil { + return "error in copy information from podLogs to buf" + } + return buf.String() +} diff --git a/docs/docs/changelog.md b/docs/docs/changelog.md index c10b9f4235..f6945909be 100644 --- a/docs/docs/changelog.md +++ b/docs/docs/changelog.md @@ -3,72 +3,111 @@ title: Changelog sidebar_label: πŸ“ Changelog --- -## 0.33.0 +## 0.34.0 #### Changes -- Revert "[[#2434](https://github.com/airyhq/airy/issues/2434)] Fix instagram echo ingestion" [[#2512](https://github.com/airyhq/airy/pull/2512)] - #### πŸš€ Features -- [[#2294](https://github.com/airyhq/airy/issues/2294)] Allow creating conversations with Twilio [[#2500](https://github.com/airyhq/airy/pull/2500)] -- [[#2476](https://github.com/airyhq/airy/issues/2476)] render deleted message instagram [[#2501](https://github.com/airyhq/airy/pull/2501)] -- [[#2453](https://github.com/airyhq/airy/issues/2453)] Store chatplugin customization state in the browser [[#2475](https://github.com/airyhq/airy/pull/2475)] -- [[#2323](https://github.com/airyhq/airy/issues/2323)] Pass Google survey response as message [[#2471](https://github.com/airyhq/airy/pull/2471)] -- [[#2255](https://github.com/airyhq/airy/issues/2255)] Modular deployment of Airy with helm [[#2341](https://github.com/airyhq/airy/pull/2341)] -- [#2437 ] Add translations to chatplugin [[#2465](https://github.com/airyhq/airy/pull/2465)] -- [[#2424](https://github.com/airyhq/airy/issues/2424)] track channel connected [[#2447](https://github.com/airyhq/airy/pull/2447)] +- [[#2518](https://github.com/airyhq/airy/issues/2518)] Add fargate annotation [[#2540](https://github.com/airyhq/airy/pull/2540)] +- Add CLI outdated version warning [[#2529](https://github.com/airyhq/airy/pull/2529)] #### πŸ› Bug Fixes -- [[#2509](https://github.com/airyhq/airy/issues/2509)] attachments facebook and instagram improvement [[#2513](https://github.com/airyhq/airy/pull/2513)] -- Fix analytics demo apply failure [[#2489](https://github.com/airyhq/airy/pull/2489)] -- [[#2255](https://github.com/airyhq/airy/issues/2255)] Fix namespace for controller [[#2508](https://github.com/airyhq/airy/pull/2508)] -- [[#2481](https://github.com/airyhq/airy/issues/2481)] enable send attachments for facebook source [[#2502](https://github.com/airyhq/airy/pull/2502)] -- [[#2504](https://github.com/airyhq/airy/issues/2504)] fix emoji reaction styling [[#2506](https://github.com/airyhq/airy/pull/2506)] -- [[#2390](https://github.com/airyhq/airy/issues/2390)] Include used ingress config items [[#2484](https://github.com/airyhq/airy/pull/2484)] -- [[#2255](https://github.com/airyhq/airy/issues/2255)] Include tracking flag in the helm chart [[#2474](https://github.com/airyhq/airy/pull/2474)] -- [[#2411](https://github.com/airyhq/airy/issues/2411)] Fix media uploader intermittent crashes [[#2470](https://github.com/airyhq/airy/pull/2470)] -- [[#2424](https://github.com/airyhq/airy/issues/2424)] Helm typo followup fix [[#2469](https://github.com/airyhq/airy/pull/2469)] -- [[#2424](https://github.com/airyhq/airy/issues/2424)] Fix Helm chart typo [[#2468](https://github.com/airyhq/airy/pull/2468)] -- [[#2424](https://github.com/airyhq/airy/issues/2424)] Fix defaulting of the segment variable [[#2467](https://github.com/airyhq/airy/pull/2467)] +- [[#2434](https://github.com/airyhq/airy/issues/2434)] Fix broken instagram Facebook inbox ingestion [[#2535](https://github.com/airyhq/airy/pull/2535)] +- [2457] Fix upgrade to same version [[#2538](https://github.com/airyhq/airy/pull/2538)] +- [[#2510](https://github.com/airyhq/airy/issues/2510)] Improve error logging for helm install [[#2522](https://github.com/airyhq/airy/pull/2522)] +- [[#2255](https://github.com/airyhq/airy/issues/2255)] Fix helm chart url [[#2525](https://github.com/airyhq/airy/pull/2525)] +- [[#2523](https://github.com/airyhq/airy/issues/2523)] Fix VERSION and add changelog [[#2524](https://github.com/airyhq/airy/pull/2524)] +- [[#2473](https://github.com/airyhq/airy/issues/2473)] fix failing cypress test [[#2507](https://github.com/airyhq/airy/pull/2507)] #### 🧰 Maintenance -- Bump cypress from 8.5.0 to 8.6.0 [[#2516](https://github.com/airyhq/airy/pull/2516)] -- Bump @types/react-redux from 7.1.19 to 7.1.20 [[#2515](https://github.com/airyhq/airy/pull/2515)] -- Bump sass from 1.42.1 to 1.43.2 [[#2496](https://github.com/airyhq/airy/pull/2496)] -- Bump @babel/preset-env from 7.15.6 to 7.15.8 [[#2498](https://github.com/airyhq/airy/pull/2498)] -- Bump babel-loader from 8.0.6 to 8.2.2 [[#2499](https://github.com/airyhq/airy/pull/2499)] -- Bump @reduxjs/toolkit from 1.6.1 to 1.6.2 [[#2494](https://github.com/airyhq/airy/pull/2494)] -- Bump i18next from 21.3.0 to 21.3.1 [[#2497](https://github.com/airyhq/airy/pull/2497)] -- Bump preact from 10.5.14 to 10.5.15 [[#2493](https://github.com/airyhq/airy/pull/2493)] -- Bump @types/lodash-es from 4.17.4 to 4.17.5 [[#2495](https://github.com/airyhq/airy/pull/2495)] -- Bump @bazel/typescript from 3.6.0 to 4.3.0 [[#2459](https://github.com/airyhq/airy/pull/2459)] -- Bump webpack-bundle-analyzer from 4.4.2 to 4.5.0 [[#2490](https://github.com/airyhq/airy/pull/2490)] -- Bump @types/react-router-dom from 5.1.8 to 5.3.1 [[#2492](https://github.com/airyhq/airy/pull/2492)] -- Bump core-js from 3.18.1 to 3.18.3 [[#2491](https://github.com/airyhq/airy/pull/2491)] -- [[#2353](https://github.com/airyhq/airy/issues/2353)] Change backend urls to hyphenation [[#2472](https://github.com/airyhq/airy/pull/2472)] -- Bump typescript from 4.2.4 to 4.3.5 [[#2486](https://github.com/airyhq/airy/pull/2486)] -- Bump i18next from 21.2.0 to 21.3.0 [[#2487](https://github.com/airyhq/airy/pull/2487)] -- Bump @typescript-eslint/eslint-plugin from 4.32.0 to 4.33.0 [[#2482](https://github.com/airyhq/airy/pull/2482)] -- Bump @types/react-redux from 7.1.18 to 7.1.19 [[#2485](https://github.com/airyhq/airy/pull/2485)] -- Bump @babel/core from 7.15.5 to 7.15.8 [[#2483](https://github.com/airyhq/airy/pull/2483)] -- Bump eslint-plugin-react from 7.26.0 to 7.26.1 [[#2479](https://github.com/airyhq/airy/pull/2479)] -- Bump @types/node from 16.9.4 to 16.10.3 [[#2480](https://github.com/airyhq/airy/pull/2480)] -- Bump linkifyjs from 2.1.9 to 3.0.1 [[#2462](https://github.com/airyhq/airy/pull/2462)] -- Bump immer from 9.0.5 to 9.0.6 [[#2466](https://github.com/airyhq/airy/pull/2466)] -- Bump @typescript-eslint/parser from 4.31.2 to 4.32.0 [[#2458](https://github.com/airyhq/airy/pull/2458)] -- Bump style-loader from 3.2.1 to 3.3.0 [[#2460](https://github.com/airyhq/airy/pull/2460)] -- Bump prismjs from 1.24.0 to 1.25.0 in /docs [[#2428](https://github.com/airyhq/airy/pull/2428)] +- Bump react-redux from 7.2.5 to 7.2.6 [[#2539](https://github.com/airyhq/airy/pull/2539)] +- Bump reselect from 4.0.0 to 4.1.1 [[#2533](https://github.com/airyhq/airy/pull/2533)] +- Bump sass-loader from 12.1.0 to 12.3.0 [[#2534](https://github.com/airyhq/airy/pull/2534)] +- Bump @types/react-dom from 17.0.9 to 17.0.10 [[#2526](https://github.com/airyhq/airy/pull/2526)] +- Bump react-markdown from 7.0.1 to 7.1.0 [[#2527](https://github.com/airyhq/airy/pull/2527)] +- Bump webpack from 5.54.0 to 5.59.1 [[#2517](https://github.com/airyhq/airy/pull/2517)] #### Airy CLI You can download the Airy CLI for your operating system from the following links: -[MacOS](https://airy-core-binaries.s3.amazonaws.com/0.32.1/darwin/amd64/airy) -[Linux](https://airy-core-binaries.s3.amazonaws.com/0.32.1/linux/amd64/airy) -[Windows](https://airy-core-binaries.s3.amazonaws.com/0.32.1/windows/amd64/airy.exe) +[MacOS](https://airy-core-binaries.s3.amazonaws.com/0.33.1/darwin/amd64/airy) +[Linux](https://airy-core-binaries.s3.amazonaws.com/0.33.1/linux/amd64/airy) +[Windows](https://airy-core-binaries.s3.amazonaws.com/0.33.1/windows/amd64/airy.exe) + +## 0.33.0 + +#### πŸš€ Features + +- [[#2294](https://github.com/airyhq/airy/issues/2294)] Allow creating conversations with Twilio [[#2500](https://github.com/airyhq/airy/pull/2500)] +- [[#2476](https://github.com/airyhq/airy/issues/2476)] render deleted message instagram [[#2501](https://github.com/airyhq/airy/pull/2501)] +- [[#2453](https://github.com/airyhq/airy/issues/2453)] Store chatplugin customization state in the browser [[#2475](https://github.com/airyhq/airy/pull/2475)] +- [[#2323](https://github.com/airyhq/airy/issues/2323)] Pass Google survey response as message [[#2471](https://github.com/airyhq/airy/pull/2471)] +- [[#2255](https://github.com/airyhq/airy/issues/2255)] Modular deployment of Airy with helm [[#2341](https://github.com/airyhq/airy/pull/2341)] +- [[#2437](https://github.com/airyhq/airy/issues/2437)] Add translations to chatplugin [[#2465](https://github.com/airyhq/airy/pull/2465)] +- [[#2424](https://github.com/airyhq/airy/issues/2424)] track channel connected [[#2447](https://github.com/airyhq/airy/pull/2447)] + +#### πŸ› Bug Fixes + +- [[#2514](https://github.com/airyhq/airy/issues/2514)] fixed ui bugs [[#2520](https://github.com/airyhq/airy/pull/2520)] +- [[#2509](https://github.com/airyhq/airy/issues/2509)] attachments facebook and instagram improvement [[#2513](https://github.com/airyhq/airy/pull/2513)] +- [[#2488](https://github.com/airyhq/airy/issues/2488)] Fix analytics demo apply failure [[#2489](https://github.com/airyhq/airy/pull/2489)] +- [[#2255](https://github.com/airyhq/airy/issues/2255)] Fix namespace for controller [[#2508](https://github.com/airyhq/airy/pull/2508)] +- [[#2481](https://github.com/airyhq/airy/issues/2481)] enable send attachments for facebook source [[#2502](https://github.com/airyhq/airy/pull/2502)] +- [[#2504](https://github.com/airyhq/airy/issues/2504)] fix emoji reaction styling [[#2506](https://github.com/airyhq/airy/pull/2506)] +- [[#2390](https://github.com/airyhq/airy/issues/2390)] Include used ingress config items [[#2484](https://github.com/airyhq/airy/pull/2484)] +- [[#2255](https://github.com/airyhq/airy/issues/2255)] Include tracking flag in the helm chart [[#2474](https://github.com/airyhq/airy/pull/2474)] +- [[#2411](https://github.com/airyhq/airy/issues/2411)] Fix media uploader intermittent crashes [[#2470](https://github.com/airyhq/airy/pull/2470)] +- [[#2424](https://github.com/airyhq/airy/issues/2424)] Helm typo followup fix [[#2469](https://github.com/airyhq/airy/pull/2469)] +- [[#2424](https://github.com/airyhq/airy/issues/2424)] Fix Helm chart typo [[#2468](https://github.com/airyhq/airy/pull/2468)] +- [[#2424](https://github.com/airyhq/airy/issues/2424)] Fix defaulting of the segment variable [[#2467](https://github.com/airyhq/airy/pull/2467)] + +#### 🧰 Maintenance + +- Bump cypress from 8.5.0 to 8.6.0 [[#2516](https://github.com/airyhq/airy/pull/2516)] +- Bump @types/react-redux from 7.1.19 to 7.1.20 [[#2515](https://github.com/airyhq/airy/pull/2515)] +- Bump sass from 1.42.1 to 1.43.2 [[#2496](https://github.com/airyhq/airy/pull/2496)] +- Bump @babel/preset-env from 7.15.6 to 7.15.8 [[#2498](https://github.com/airyhq/airy/pull/2498)] +- Bump babel-loader from 8.0.6 to 8.2.2 [[#2499](https://github.com/airyhq/airy/pull/2499)] +- Bump @reduxjs/toolkit from 1.6.1 to 1.6.2 [[#2494](https://github.com/airyhq/airy/pull/2494)] +- Bump i18next from 21.3.0 to 21.3.1 [[#2497](https://github.com/airyhq/airy/pull/2497)] +- Bump preact from 10.5.14 to 10.5.15 [[#2493](https://github.com/airyhq/airy/pull/2493)] +- Bump @types/lodash-es from 4.17.4 to 4.17.5 [[#2495](https://github.com/airyhq/airy/pull/2495)] +- Bump @bazel/typescript from 3.6.0 to 4.3.0 [[#2459](https://github.com/airyhq/airy/pull/2459)] +- Bump webpack-bundle-analyzer from 4.4.2 to 4.5.0 [[#2490](https://github.com/airyhq/airy/pull/2490)] +- Bump @types/react-router-dom from 5.1.8 to 5.3.1 [[#2492](https://github.com/airyhq/airy/pull/2492)] +- Bump core-js from 3.18.1 to 3.18.3 [[#2491](https://github.com/airyhq/airy/pull/2491)] +- [[#2353](https://github.com/airyhq/airy/issues/2353)] Change backend urls to hyphenation [[#2472](https://github.com/airyhq/airy/pull/2472)] +- Bump typescript from 4.2.4 to 4.3.5 [[#2486](https://github.com/airyhq/airy/pull/2486)] +- Bump i18next from 21.2.0 to 21.3.0 [[#2487](https://github.com/airyhq/airy/pull/2487)] +- Bump @typescript-eslint/eslint-plugin from 4.32.0 to 4.33.0 [[#2482](https://github.com/airyhq/airy/pull/2482)] +- Bump @types/react-redux from 7.1.18 to 7.1.19 [[#2485](https://github.com/airyhq/airy/pull/2485)] +- Bump @babel/core from 7.15.5 to 7.15.8 [[#2483](https://github.com/airyhq/airy/pull/2483)] +- Bump eslint-plugin-react from 7.26.0 to 7.26.1 [[#2479](https://github.com/airyhq/airy/pull/2479)] +- Bump @types/node from 16.9.4 to 16.10.3 [[#2480](https://github.com/airyhq/airy/pull/2480)] +- Bump linkifyjs from 2.1.9 to 3.0.1 [[#2462](https://github.com/airyhq/airy/pull/2462)] +- Bump immer from 9.0.5 to 9.0.6 [[#2466](https://github.com/airyhq/airy/pull/2466)] +- Bump @typescript-eslint/parser from 4.31.2 to 4.32.0 [[#2458](https://github.com/airyhq/airy/pull/2458)] +- Bump style-loader from 3.2.1 to 3.3.0 [[#2460](https://github.com/airyhq/airy/pull/2460)] +- Bump prismjs from 1.24.0 to 1.25.0 in /docs [[#2428](https://github.com/airyhq/airy/pull/2428)] + +#### Airy CLI + +You can download the Airy CLI for your operating system from the following links: + +[MacOS](https://airy-core-binaries.s3.amazonaws.com/0.33.0/darwin/amd64/airy) +[Linux](https://airy-core-binaries.s3.amazonaws.com/0.33.0/linux/amd64/airy) +[Windows](https://airy-core-binaries.s3.amazonaws.com/0.33.0/windows/amd64/airy.exe) + +#### Upgrade notes: +This release has breaking changes in the structure of the airy.yaml file. When upgrading from an older version, do the following: +- Remove the `kubernetes:` section, as it is no longer needed. The version is used + from the version of the CLI and the - namespace is used from the workspace + file cli.yaml +- Rename the `ingress:` section to `ingress-controller:` ## 0.32.0 @@ -1221,45 +1260,3 @@ You can download the Airy CLI for your operating system from the following links [Linux](https://airy-core-binaries.s3.amazonaws.com/0.12.0/linux/amd64/airy) [Windows](https://airy-core-binaries.s3.amazonaws.com/0.12.0/windows/amd64/airy.exe) -## 0.11.0 - -#### πŸš€ Features - -- Custom welcome message in Chat Plugin [[#1103](https://github.com/airyhq/airy/pull/1103)] -- [[#1015](https://github.com/airyhq/airy/issues/1015)] Refactor the scheduling of the components [[#1091](https://github.com/airyhq/airy/pull/1091)] -- [[#1016](https://github.com/airyhq/airy/issues/1016)] Create topics with k8s job [[#1074](https://github.com/airyhq/airy/pull/1074)] -- [[#1044](https://github.com/airyhq/airy/issues/1044)] Add cypress rule [[#1077](https://github.com/airyhq/airy/pull/1077)] -- [[#1080](https://github.com/airyhq/airy/issues/1080)] Change style of ChatPlugin + fix carousel [[#1082](https://github.com/airyhq/airy/pull/1082)] -- [[#1014](https://github.com/airyhq/airy/issues/1014)] Add helm image containing the charts [[#1079](https://github.com/airyhq/airy/pull/1079)] -- [[#814](https://github.com/airyhq/airy/issues/814)] Add cmd+enter and better disabled state to… [[#1076](https://github.com/airyhq/airy/pull/1076)] - - -#### πŸ› Bug Fixes - -- Fix/1104 split endpoints in http library in multiple files [[#1114](https://github.com/airyhq/airy/pull/1114)] -- [[#1099](https://github.com/airyhq/airy/issues/1099)] Add missing allowed origin env [[#1100](https://github.com/airyhq/airy/pull/1100)] -- [[#1093](https://github.com/airyhq/airy/issues/1093)] Fix image url for Facebook channel connection [[#1095](https://github.com/airyhq/airy/pull/1095)] -- [[#1088](https://github.com/airyhq/airy/issues/1088)] Fix missing Facebook channel disconnect [[#1089](https://github.com/airyhq/airy/pull/1089)] -- [[#1068](https://github.com/airyhq/airy/issues/1068)] improve channels UI [[#1071](https://github.com/airyhq/airy/pull/1071)] -- fix size chatplugin in example.html [[#1070](https://github.com/airyhq/airy/pull/1070)] -- [[#1028](https://github.com/airyhq/airy/issues/1028)] replaced manual mapping with npm lib [[#1098](https://github.com/airyhq/airy/pull/1098)] -- [[#1072](https://github.com/airyhq/airy/issues/1072)] fixed text message and fallback in google suggestions [[#1073](https://github.com/airyhq/airy/pull/1073)] - -#### πŸ“š Documentation - -- [1092] Merge deployment and installation sections [[#1096](https://github.com/airyhq/airy/pull/1096)] -- Readme Revamp [[#1059](https://github.com/airyhq/airy/pull/1059)] - -#### 🧰 Maintenance - -- Use Bazel eslint test rule [[#1086](https://github.com/airyhq/airy/pull/1086)] -- Upgrade bazel tools and use buildifier tests [[#1081](https://github.com/airyhq/airy/pull/1081)] - -#### Airy CLI - -You can download the Airy CLI for your operating system from the following links: - -[MacOS](https://airy-core-binaries.s3.amazonaws.com/0.11.0/darwin/amd64/airy) -[Linux](https://airy-core-binaries.s3.amazonaws.com/0.11.0/linux/amd64/airy) -[Windows](https://airy-core-binaries.s3.amazonaws.com/0.11.0/windows/amd64/airy.exe) - diff --git a/docs/docs/getting-started/installation/helm.md b/docs/docs/getting-started/installation/helm.md index 5481647de3..68dc10c676 100644 --- a/docs/docs/getting-started/installation/helm.md +++ b/docs/docs/getting-started/installation/helm.md @@ -17,9 +17,10 @@ an already existing Kubernetes cluster [Helm](https://helm.sh/). ## Prerequisites You would need an existing Kubernetes cluster and administrative access to it. For the purpose of this guide, we will use a Google (GKE) Kubernetes cluster. +The cluster that we will create will have two nodes with 2cpu and 16GB RAM each. ```sh -gcloud container clusters create awesomechat --num-nodes=2 +gcloud container clusters create awesomechat --num-nodes=2 --machine-type=e2-standard-4 ``` You will also need the [Helm](https://helm.sh/docs/intro/quickstart/) and [Kubectl](https://kubernetes.io/docs/tasks/tools/) binaries, locally on your machine. @@ -39,7 +40,7 @@ Deploy Airy Core with the latest version. You can also configure a specific vers ```sh VERSION=$(curl -L -s https://airy-core-binaries.s3.amazonaws.com/stable.txt) -helm install airy https://airy-core-helm-charts.s3.amazonaws.com/stable/${VERSION}.tgz --timeout 10m +helm install airy https://airy-core-helm-charts.s3.amazonaws.com/stable/airy-${VERSION}.tgz --timeout 10m ``` By default `Airy Core` creates only a HTTP listener and when running in cloud environment it is recommended to setup an encrypted connection. @@ -59,8 +60,6 @@ ingress-controller: host: awesomechat.airy.co https: true letsencryptEmail: "sre@airy.co" - loadbalancerAnnotations: - service.beta.kubernetes.io/aws-load-balancer-type: nlb ``` Run the following command to upgrade your Airy Core installation and setup Let's Encrypt: diff --git a/frontend/ui/src/pages/Inbox/ConversationList/index.tsx b/frontend/ui/src/pages/Inbox/ConversationList/index.tsx index f587cfedc8..438cfb96aa 100644 --- a/frontend/ui/src/pages/Inbox/ConversationList/index.tsx +++ b/frontend/ui/src/pages/Inbox/ConversationList/index.tsx @@ -16,6 +16,7 @@ import {StateModel} from '../../../reducers'; import styles from './index.module.scss'; import {ConversationRouteProps} from '../index'; +import {cyConversationList} from 'handles'; type ConversationListProps = ConnectedProps; @@ -85,7 +86,7 @@ const ConversationList = (props: ConversationListProps) => { return (
-
+
diff --git a/infrastructure/helm-chart/charts/ingress-controller/templates/scripts.yaml b/infrastructure/helm-chart/charts/ingress-controller/templates/scripts.yaml index 101177f497..ca08c29558 100644 --- a/infrastructure/helm-chart/charts/ingress-controller/templates/scripts.yaml +++ b/infrastructure/helm-chart/charts/ingress-controller/templates/scripts.yaml @@ -32,20 +32,22 @@ data: wait-for-loadbalancer.sh: | #!/bin/sh delay=${DELAY:-10} - host=$(kubectl -n kube-system get service ingress-nginx-controller -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') + host=$(kubectl -n kube-system get service ingress-nginx-controller -o jsonpath='{.status.loadBalancer.ingress[0].*}') while test -z "${host}"; do echo "Waiting for loadbalancer to be created..." sleep ${delay} - host=$(kubectl -n kube-system get service ingress-nginx-controller -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') + host=$(kubectl -n kube-system get service ingress-nginx-controller -o jsonpath='{.status.loadBalancer.ingress[0].*}') done update-ingress-lb.sh: | #!/bin/sh host=$(kubectl -n kube-system get service ingress-nginx-controller -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') - for ingress in $(kubectl get ingress -l core.airy.co/managed=true -o jsonpath='{.items[*].metadata.name}'); do - kubectl get ingress ${ingress} -o json | jq "(.spec.rules[0].host=\"${host}\")" | kubectl apply -f - - done + if test "${host}"; then + for ingress in $(kubectl get ingress -l core.airy.co/managed=true -o jsonpath='{.items[*].metadata.name}'); do + kubectl get ingress ${ingress} -o json | jq "(.spec.rules[0].host=\"${host}\")" | kubectl apply -f - + done + fi update-configmap-lb.sh: | #!/bin/sh protocol=${PROTOCOL:-http} - host=$(kubectl -n kube-system get service ingress-nginx-controller -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') + host=$(kubectl -n kube-system get service ingress-nginx-controller -o jsonpath='{.status.loadBalancer.ingress[0].*}') kubectl patch configmap core-config -p "{\"data\":{\"API_HOST\":\"${protocol}://${host}\"}}" --type merge diff --git a/infrastructure/helm-chart/templates/controller/deployment.yaml b/infrastructure/helm-chart/templates/controller/deployment.yaml index 52d5f550f1..21cb794eb3 100644 --- a/infrastructure/helm-chart/templates/controller/deployment.yaml +++ b/infrastructure/helm-chart/templates/controller/deployment.yaml @@ -18,6 +18,8 @@ spec: metadata: labels: app: airy-controller + annotations: + releaseTime: {{ (now) | toString | trunc 28 | quote }} spec: serviceAccountName: airy-controller automountServiceAccountToken: true diff --git a/integration/ui/state_conversations.spec.ts b/integration/ui/state_conversations.spec.ts index 506ab22cf7..f1b8da09a6 100644 --- a/integration/ui/state_conversations.spec.ts +++ b/integration/ui/state_conversations.spec.ts @@ -1,17 +1,11 @@ -import { - cyOpenStateButton, - cyClosedStateButton, - cyConversationListItemInfo, - cyConversationStatus, - cyClickableListItem, -} from 'handles'; +import {cyOpenStateButton, cyClosedStateButton, cyConversationListItemInfo, cyConversationStatus} from 'handles'; function closeConversation() { cy.get(`[data-cy=${cyOpenStateButton}]`).first().click(); - cy.get(`[data-cy=${cyClosedStateButton}]`); const conversationStatusClosed = cy .get(`[data-cy=${cyConversationStatus}]`) + .first() .invoke('attr', 'class') .should('contain', 'closed'); expect(conversationStatusClosed).to.exist; @@ -19,10 +13,10 @@ function closeConversation() { function openConversation() { cy.get(`[data-cy=${cyClosedStateButton}]`).first().click(); - cy.get(`[data-cy=${cyOpenStateButton}]`); const conversationStatusOpen = cy .get(`[data-cy=${cyConversationStatus}]`) + .first() .invoke('attr', 'class') .should('contain', 'open'); expect(conversationStatusOpen).to.exist; @@ -34,14 +28,10 @@ describe('toggles the state of a conversation, accurately changing the Open and cy.url().should('include', '/inbox'); cy.get(`[data-cy=${cyConversationListItemInfo}]`).then(conversationListItemInfo => { - cy.get(`[data-cy=${cyClickableListItem}]`).first().click(); - - if (conversationListItemInfo.find(`[data-cy=${cyOpenStateButton}]`).length > 0) { + if (conversationListItemInfo.find(`[data-cy=${cyOpenStateButton}]`).first().length > 0) { closeConversation(); - openConversation(); } else { openConversation(); - closeConversation(); } }); }); diff --git a/package.json b/package.json index 20f0e58896..1b9b511117 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "@stomp/stompjs": "^6.1.2", "@types/node": "16.10.3", "@types/react": "17.0.20", - "@types/react-dom": "17.0.9", + "@types/react-dom": "17.0.10", "@types/react-redux": "7.1.20", "@types/react-router-dom": "^5.3.1", "camelcase-keys": "^7.0.0", @@ -26,13 +26,13 @@ "react-color": "^2.19.3", "react-dom": "17.0.2", "react-i18next": "^11.12.0", - "react-markdown": "^7.0.1", + "react-markdown": "^7.1.0", "react-modal": "^3.14.3", - "react-redux": "7.2.5", + "react-redux": "7.2.6", "react-router-dom": "5.3.0", "redux": "^4.1.1", "regenerator-runtime": "^0.13.9", - "reselect": "4.0.0", + "reselect": "4.1.1", "typesafe-actions": "^5.1.0" }, "devDependencies": { @@ -62,12 +62,12 @@ "prettier": "^2.3.2", "react-hot-loader": "^4.13.0", "sass": "^1.43.2", - "sass-loader": "^12.1.0", + "sass-loader": "^12.3.0", "style-loader": "^3.3.0", "terser-webpack-plugin": "^5.2.4", "typescript": "4.3.5", "url-loader": "^4.1.1", - "webpack": "5.54.0", + "webpack": "5.59.1", "webpack-bundle-analyzer": "^4.5.0", "webpack-cli": "^4.8.0", "webpack-dev-server": "^3.11.2" diff --git a/yarn.lock b/yarn.lock index 495d959a41..9b31f45f64 100644 --- a/yarn.lock +++ b/yarn.lock @@ -920,10 +920,10 @@ "@babel/helper-validator-option" "^7.14.5" "@babel/plugin-transform-typescript" "^7.15.0" -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.14.5", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": - version "7.15.4" - resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.15.4.tgz" - integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw== +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.0", "@babel/runtime@^7.12.1", "@babel/runtime@^7.12.13", "@babel/runtime@^7.14.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.8.4", "@babel/runtime@^7.9.2": + version "7.16.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.16.0.tgz#e27b977f2e2088ba24748bf99b5e1dece64e4f0b" + integrity sha512-Nht8L0O8YCktmsDV6FqFue7vQLRx3Hb0B37lS5y0jDRqRxlBG4wIJHnf9/bgSE2UyipKFA01YtS+npRdTWBUyw== dependencies: regenerator-runtime "^0.13.4" @@ -1393,14 +1393,14 @@ resolved "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz" integrity sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug== -"@types/react-dom@17.0.9": - version "17.0.9" - resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-17.0.9.tgz" - integrity sha512-wIvGxLfgpVDSAMH5utdL9Ngm5Owu0VsGmldro3ORLXV8CShrL8awVj06NuEXFQ5xyaYfdca7Sgbk/50Ri1GdPg== +"@types/react-dom@17.0.10": + version "17.0.10" + resolved "https://registry.yarnpkg.com/@types/react-dom/-/react-dom-17.0.10.tgz#d6972ec018d23cf22b99597f1289343d99ea9d9d" + integrity sha512-8oz3NAUId2z/zQdFI09IMhQPNgIbiP8Lslhv39DIDamr846/0spjZK0vnrMak0iB8EKb9QFTTIdg2Wj2zH5a3g== dependencies: "@types/react" "*" -"@types/react-redux@7.1.20", "@types/react-redux@^7.1.16": +"@types/react-redux@7.1.20", "@types/react-redux@^7.1.20": version "7.1.20" resolved "https://registry.yarnpkg.com/@types/react-redux/-/react-redux-7.1.20.tgz#42f0e61ababb621e12c66c96dda94c58423bd7df" integrity sha512-q42es4c8iIeTgcnB+yJgRTTzftv3eYYvCZOh1Ckn2eX/3o5TdsQYKUWpLoLuGlcY/p+VAhV9IOEZJcWk/vfkXw== @@ -2165,18 +2165,7 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browserslist@^4.14.5, browserslist@^4.16.6: - version "4.17.1" - resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.17.1.tgz" - integrity sha512-aLD0ZMDSnF4lUt4ZDNgqi5BUn9BZ7YdQdI/cYlILrhdSSZJLU9aNZoD5/NBmM4SK34APB2e83MOsRt1EnkuyaQ== - dependencies: - caniuse-lite "^1.0.30001259" - electron-to-chromium "^1.3.846" - escalade "^3.1.1" - nanocolors "^0.1.5" - node-releases "^1.1.76" - -browserslist@^4.17.3: +browserslist@^4.14.5, browserslist@^4.16.6, browserslist@^4.17.3: version "4.17.4" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.17.4.tgz#72e2508af2a403aec0a49847ef31bd823c57ead4" integrity sha512-Zg7RpbZpIJRW3am9Lyckue7PLytvVxxhJj1CaJVlCWENsGEAOlnlt8X0ZxGRPp7Bt9o8tIRM5SEXy4BCPMJjLQ== @@ -2273,11 +2262,6 @@ camelcase@^6.2.0: resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== -caniuse-lite@^1.0.30001259: - version "1.0.30001261" - resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001261.tgz" - integrity sha512-vM8D9Uvp7bHIN0fZ2KQ4wnmYFpJo/Etb4Vwsuc+ka0tfGDHvOPrFm6S/7CCNLSOkAUjenT2HnUPESdOIL91FaA== - caniuse-lite@^1.0.30001265: version "1.0.30001267" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001267.tgz#b1cf2937175afc0570e4615fc2d2f9069fa0ed30" @@ -3064,11 +3048,6 @@ ee-first@1.1.1: resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz" integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= -electron-to-chromium@^1.3.846: - version "1.3.853" - resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.853.tgz" - integrity sha512-W4U8n+U8I5/SUaFcqZgbKRmYZwcyEIQVBDf+j5QQK6xChjXnQD+wj248eGR9X4u+dDmDR//8vIfbu4PrdBBIoQ== - electron-to-chromium@^1.3.867: version "1.3.870" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.870.tgz#c15c921e66a46985181b261f8093b91c2abb6604" @@ -3999,6 +3978,11 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" +hast-util-whitespace@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/hast-util-whitespace/-/hast-util-whitespace-2.0.0.tgz#4fc1086467cc1ef5ba20673cb6b03cec3a970f1c" + integrity sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg== + he@^1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" @@ -5389,11 +5373,6 @@ nan@^2.12.1: resolved "https://registry.npmjs.org/nan/-/nan-2.15.0.tgz" integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== -nanocolors@^0.1.5: - version "0.1.12" - resolved "https://registry.npmjs.org/nanocolors/-/nanocolors-0.1.12.tgz" - integrity sha512-2nMHqg1x5PU+unxX7PGY7AuYxl2qDx7PSrTRjizr8sxdd3l/3hBuWWaki62qmtYm2U5i4Z5E7GbjlyDFhs9/EQ== - nanoid@^3.1.23: version "3.1.23" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz" @@ -5454,11 +5433,6 @@ node-forge@^0.10.0: resolved "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz" integrity sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA== -node-releases@^1.1.76: - version "1.1.76" - resolved "https://registry.npmjs.org/node-releases/-/node-releases-1.1.76.tgz" - integrity sha512-9/IECtNr8dXNmPWmFXepT0/7o5eolGesHUa3mtr0KlgnCvnZxwh2qensKL42JJY2vQKC3nIBXetFAqR+PW1CmA== - node-releases@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.0.tgz#67dc74903100a7deb044037b8a2e5f453bb05400" @@ -6193,12 +6167,12 @@ react-i18next@^11.12.0: "@babel/runtime" "^7.14.5" html-parse-stringify "^3.0.1" -react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: +react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1: version "16.13.1" resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== -react-is@^17.0.0: +react-is@^17.0.0, react-is@^17.0.2: version "17.0.2" resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== @@ -6208,14 +6182,15 @@ react-lifecycles-compat@^3.0.0, react-lifecycles-compat@^3.0.4: resolved "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz" integrity sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA== -react-markdown@^7.0.1: - version "7.0.1" - resolved "https://registry.npmjs.org/react-markdown/-/react-markdown-7.0.1.tgz" - integrity sha512-pthNPaoiwg0q7hukoE04F2ENwSzijIlWHJ4UMs/96LUe/G/P3FnbP4qHzx3FoNqae+2SqDG8vzniTLnJDeWneg== +react-markdown@^7.1.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/react-markdown/-/react-markdown-7.1.0.tgz#0ba62a4459daab6600ede83495a9228dae9d8f8e" + integrity sha512-hL8cLLkTydyoKlZWZOjlU6TvMYIw9qKLh1CCzVfnhKt/R/SnKVAqiyugetXY61CkjhBqJl2C5FdU3OwHYo7SrQ== dependencies: "@types/hast" "^2.0.0" "@types/unist" "^2.0.0" comma-separated-tokens "^2.0.0" + hast-util-whitespace "^2.0.0" prop-types "^15.0.0" property-information "^6.0.0" react-is "^17.0.0" @@ -6237,17 +6212,17 @@ react-modal@^3.14.3: react-lifecycles-compat "^3.0.0" warning "^4.0.3" -react-redux@7.2.5: - version "7.2.5" - resolved "https://registry.npmjs.org/react-redux/-/react-redux-7.2.5.tgz" - integrity sha512-Dt29bNyBsbQaysp6s/dN0gUodcq+dVKKER8Qv82UrpeygwYeX1raTtil7O/fftw/rFqzaf6gJhDZRkkZnn6bjg== +react-redux@7.2.6: + version "7.2.6" + resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.6.tgz#49633a24fe552b5f9caf58feb8a138936ddfe9aa" + integrity sha512-10RPdsz0UUrRL1NZE0ejTkucnclYSgXp5q+tB5SWx2qeG2ZJQJyymgAhwKy73yiL/13btfB6fPr+rgbMAaZIAQ== dependencies: - "@babel/runtime" "^7.12.1" - "@types/react-redux" "^7.1.16" + "@babel/runtime" "^7.15.4" + "@types/react-redux" "^7.1.20" hoist-non-react-statics "^3.3.2" loose-envify "^1.4.0" prop-types "^15.7.2" - react-is "^16.13.1" + react-is "^17.0.2" react-router-dom@5.3.0: version "5.3.0" @@ -6496,10 +6471,10 @@ requires-port@^1.0.0: resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz" integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8= -reselect@4.0.0, reselect@^4.0.0: - version "4.0.0" - resolved "https://registry.npmjs.org/reselect/-/reselect-4.0.0.tgz" - integrity sha512-qUgANli03jjAyGlnbYVAV5vvnOmJnODyABz51RdBN7M4WaVu8mecZWgyQNkG8Yqe3KRGRt0l4K4B3XVEULC4CA== +reselect@4.1.1, reselect@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.1.tgz#7e2c110efbf3d70df3482604bcf2bc0ab571346a" + integrity sha512-Jjt8Us6hAWJpjucyladHvUGR+q1mHHgWtGDXlhvvKyNyIeQ3bjuWLDX0bsTLhbm/gd4iXEACBlODUHBlLWiNnA== resolve-cwd@^2.0.0: version "2.0.0" @@ -6629,10 +6604,10 @@ safe-regex@^1.1.0: resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sass-loader@^12.1.0: - version "12.1.0" - resolved "https://registry.npmjs.org/sass-loader/-/sass-loader-12.1.0.tgz" - integrity sha512-FVJZ9kxVRYNZTIe2xhw93n3xJNYZADr+q69/s98l9nTCrWASo+DR2Ot0s5xTKQDDEosUkatsGeHxcH4QBp5bSg== +sass-loader@^12.3.0: + version "12.3.0" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-12.3.0.tgz#93278981c189c36a58cbfc37d4b9cef0cdc02871" + integrity sha512-6l9qwhdOb7qSrtOu96QQ81LVl8v6Dp9j1w3akOm0aWHyrTYtagDt5+kS32N4yq4hHk3M+rdqoRMH+lIdqvW6HA== dependencies: klona "^2.0.4" neo-async "^2.6.2" @@ -7838,10 +7813,10 @@ webpack-sources@^3.2.0: resolved "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.1.tgz" integrity sha512-t6BMVLQ0AkjBOoRTZgqrWm7xbXMBzD+XDq2EZ96+vMfn3qKgsvdXZhbPZ4ElUOpdv4u+iiGe+w3+J75iy/bYGA== -webpack@5.54.0: - version "5.54.0" - resolved "https://registry.npmjs.org/webpack/-/webpack-5.54.0.tgz" - integrity sha512-MAVKJMsIUotOQKzFOmN8ZkmMlj7BOyjDU6t1lomW9dWOme5WTStzGa3HMLdV1KYD1AiFETGsznL4LMSvj4tukw== +webpack@5.59.1: + version "5.59.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.59.1.tgz#60c77e9aad796252153d4d7ab6b2d4c11f0e548c" + integrity sha512-I01IQV9K96FlpXX3V0L4nvd7gb0r7thfuu1IfT2P4uOHOA77nKARAKDYGe/tScSHKnffNIyQhLC8kRXzY4KEHQ== dependencies: "@types/eslint-scope" "^3.7.0" "@types/estree" "^0.0.50"