diff --git a/data/flows.json b/data/flows.json index b5ef03a06..05846450e 100644 --- a/data/flows.json +++ b/data/flows.json @@ -1,12 +1,4 @@ [ - { - "id": "eb7909bcf5fcaf8a", - "type": "tab", - "label": "Big Bang", - "disabled": false, - "info": "", - "env": [] - }, { "id": "c86af370eff94afa", "type": "tab", @@ -15,6 +7,14 @@ "info": "Guide to an incoming Unicorn to get their technical hoofs wet. The guide takes you through familiarization with local K8s clusters, bigbang, and zarf.", "env": [] }, + { + "id": "eb7909bcf5fcaf8a", + "type": "tab", + "label": "Kubernetes to Big Bang", + "disabled": false, + "info": "", + "env": [] + }, { "id": "0ac7681ed1c2bc4b", "type": "subflow", @@ -60,6 +60,63 @@ "meta": {}, "color": "#DDAA99" }, + { + "id": "56bd5f348afad14f", + "type": "subflow", + "name": "Golang", + "info": "", + "category": "", + "in": [ + { + "x": 540, + "y": 60, + "wires": [ + { + "id": "10a24d4bdf2a0f02" + } + ] + } + ], + "out": [ + { + "x": 540, + "y": 590, + "wires": [ + { + "id": "50a4c6a1e304101c", + "port": 0 + } + ] + } + ], + "env": [], + "meta": {}, + "color": "#DDAA99" + }, + { + "id": "13374ec618504763", + "type": "subflow", + "name": "Big Bang", + "info": "", + "category": "", + "in": [ + { + "x": 50, + "y": 30, + "wires": [] + } + ], + "out": [ + { + "x": 160, + "y": 30, + "wires": [] + } + ], + "env": [], + "meta": {}, + "color": "#DDAA99" + }, { "id": "73521b98841c6355", "type": "resource", @@ -194,146 +251,265 @@ ] }, { - "id": "5dfd2ba38ec5178d", - "type": "resource", - "z": "eb7909bcf5fcaf8a", - "name": "Containerization", - "info": "", - "x": 430, - "y": 50, + "id": "447bce72e21d67db", + "type": "guide", + "z": "56bd5f348afad14f", + "name": "Learn Go", + "info": "Learn basic Go syntax, conventions and data types. Keep an eye out for the following concepts:\n\n- Structs\n- Pointers\n- Goroutines", + "x": 540, + "y": 250, "wires": [ [ - "ea946e25b7c2079f" + "bcc94caf6482eeed" ] ] }, { - "id": "8c04bec4a15f6702", + "id": "5ab88cc4881dc30e", "type": "resource", - "z": "eb7909bcf5fcaf8a", - "name": "Helm", - "info": "", - "x": 610, - "y": 200, + "z": "56bd5f348afad14f", + "name": "Learn Go With Tests", + "info": "Literally the **best** resource to learn Go: https://quii.gitbook.io/learn-go-with-tests/\n\nRecommend using this resource to learn basic Go concepts and sytnax", + "x": 290, + "y": 170, "wires": [ [ - "e328f5849309e731" + "447bce72e21d67db" ] ] }, { - "id": "fc01372231b580db", - "type": "resource", - "z": "eb7909bcf5fcaf8a", - "name": "Custom Resource Definitions", - "info": "", - "x": 430, - "y": 200, + "id": "bcc94caf6482eeed", + "type": "guide", + "z": "56bd5f348afad14f", + "name": "Build a Web App", + "info": "The goal of this section is to build a Go web app that will eventually get deployed in K8s. Recommend building at least 1 CRUD operation and adding a DB (with migrations to make life easier when spinning up DB pods down the line)", + "x": 540, + "y": 380, "wires": [ [ - "e328f5849309e731" + "50a4c6a1e304101c" ] ] }, { - "id": "09d8e90d5b4ade12", + "id": "93a8f10c220fc106", "type": "resource", - "z": "eb7909bcf5fcaf8a", - "name": "Kustomization", - "info": "", - "x": 90, - "y": 200, + "z": "56bd5f348afad14f", + "name": "Go Web Tutorials", + "info": "Birdpedia: https://hhwe.github.io/dev/golang/Build-a-web-application-in-Go.html\n\nTodo app: https://betterprogramming.pub/build-a-simple-todolist-app-in-golang-82297ec25c7d", + "x": 290, + "y": 290, "wires": [ [ - "e328f5849309e731" + "bcc94caf6482eeed", + "95836a67ff9c5c4c" ] ] }, { - "id": "71a96ec4058930db", + "id": "95836a67ff9c5c4c", "type": "resource", - "z": "eb7909bcf5fcaf8a", - "name": "GitOps", - "info": "", - "x": 720, - "y": 150, - "wires": [ - [ - "45465f711df6da7e" - ] - ] - }, - { - "id": "98df2d11adb09046", - "type": "resource", - "z": "eb7909bcf5fcaf8a", - "name": "git", - "info": "# Description\n\n[Git](https://git-scm.com/) is a free and open source distributed version control system.\n\n## Resources\n- https://git-scm.com/docs\n\n\n## Examples\n- github.com\n- gitlab.com\n- https://gitea.com/", - "x": 720, - "y": 50, - "wires": [ - [ - "71a96ec4058930db" - ] - ] - }, - { - "id": "45465f711df6da7e", - "type": "resource", - "z": "eb7909bcf5fcaf8a", - "name": "Flux", - "info": "", - "x": 720, - "y": 200, - "wires": [ - [ - "e328f5849309e731" - ] - ] - }, - { - "id": "e328f5849309e731", - "type": "resource", - "z": "eb7909bcf5fcaf8a", - "name": "Big Bang", - "info": "", - "x": 430, - "y": 620, + "z": "56bd5f348afad14f", + "name": "DB Migrations", + "info": "https://github.com/golang-migrate/migrate", + "x": 290, + "y": 360, "wires": [ [] ] }, { - "id": "ea946e25b7c2079f", - "type": "subflow:0ac7681ed1c2bc4b", - "z": "eb7909bcf5fcaf8a", - "name": "", - "x": 430, - "y": 110, + "id": "10a24d4bdf2a0f02", + "type": "comment", + "z": "56bd5f348afad14f", + "name": "Start Here!", + "info": "## Motivation\nThe purpose of this flow is to introduce Unicorns to Golang (or Go for short) with the goal of producing a small web app that can be deployed and integrated with K8s and/or Big Bang\n", + "x": 540, + "y": 150, "wires": [ [ - "8c04bec4a15f6702", - "fc01372231b580db", - "09d8e90d5b4ade12", - "71a96ec4058930db", - "81348cdecdf51fd9" + "447bce72e21d67db" ] ] }, { - "id": "81348cdecdf51fd9", + "id": "50a4c6a1e304101c", + "type": "guide", + "z": "56bd5f348afad14f", + "name": "Dockerize", + "info": "Create a Dockerfile for the Go web app, recommend using the the builder image pattern (utilizing multi-stage builds). \n\nYou can also try creating the image without using a builder pattern and seeing the (massive) size difference in image size.", + "x": 540, + "y": 520, + "wires": [ + [] + ] + }, + { + "id": "a11809c78f2b406c", "type": "resource", - "z": "eb7909bcf5fcaf8a", - "name": "Operators", - "info": "https://www.youtube.com/watch?v=ha3LjlD6g7g", - "x": 240, - "y": 200, + "z": "56bd5f348afad14f", + "name": "Builder Pattern", + "info": "https://docs.docker.com/develop/develop-images/multistage-build/\n\nhttps://blog.alexellis.io/mutli-stage-docker-builds/", + "x": 290, + "y": 450, "wires": [ [ - "e328f5849309e731" + "50a4c6a1e304101c" ] ] }, + { + "id": "8a7eebc511e2c773", + "type": "comment", + "z": "13374ec618504763", + "name": "Start here!", + "info": "## Motivation\nThe goal of this guide to introduce Big Bang tooling in a layered approach from the bottom up. That is, instead of installing Big Bang proper, the purpose is to learn a single tool used in Big Bang, integrate it with an application, observe the effects and then layer the next tool, etc.\n\nInspired by: https://github.com/defenseunicorns/bb-up", + "x": 270, + "y": 60, + "wires": [ + [ + "6018b32890e917d5" + ] + ] + }, + { + "id": "6018b32890e917d5", + "type": "subflow:56bd5f348afad14f", + "z": "13374ec618504763", + "name": "", + "x": 270, + "y": 140, + "wires": [ + [ + "c3c92b9186f4ff8f" + ] + ] + }, + { + "id": "c3c92b9186f4ff8f", + "type": "guide", + "z": "13374ec618504763", + "name": "Helmify", + "info": "## Prerequsities\n- You must have a containerized web app and database before starting this step\n\n\n## Goal\nCreate a Helm chart that describes the deployment of the containerized web app and database built in the previous step\n\n## Checklist\n- Create a Helm chart as described above\n- Use a ConfigMap / Secret for database configuration\n- Use K8s DNS resolution to point the application to the database", + "x": 270, + "y": 220, + "wires": [ + [ + "c0c9b74371c0c8c3" + ] + ] + }, + { + "id": "8bf22775dd836668", + "type": "guide", + "z": "13374ec618504763", + "name": "Deploy with Flux", + "info": "## Goals\n- Install Flux on the K8s cluster\n- Deploy the Helm chart using Flux\n- Understand pros/cons of using Flux bootstrap vs other installation methods\n- Understand pros/cons of deploying with a HelmRelease vs Kustomization\n\n## Checklist\n- Install Flux on the cluster (explore [bootstrap](https://fluxcd.io/docs/cmd/flux_bootstrap/) vs non-boostrap approaches)\n- Create a [GitRepository](https://fluxcd.io/docs/components/source/gitrepositories/)\n- Deploy using a [HelmRelease](https://fluxcd.io/docs/components/helm/helmreleases/)\n- Deploy using [kustomize](https://github.com/kubernetes-sigs/kustomize) + [Kustomization](https://fluxcd.io/docs/components/kustomize/kustomization/)\n- Explore how to reconcile a HelmRelease/Kustomization/GitRepository manually vs automatically\n- Create an `install-with-flux.yaml` that applies the Flux CRDs to the cluster\n - This enables you to create the cluster, install Flux and install all applications by applying this `yaml` file (ie. simplifying the deployment process)\n- Make changes to the Helm Values file, commit and push, and ensure the changes propagate to the cluster (do this for both the Kustomization and HelmRelease methods)\n - Really practice this! Flux has a lot of nuance that is easy to gloss over, and is the cornerstone of deploying and updating BB", + "x": 270, + "y": 360, + "wires": [ + [ + "43dd83070be818d8" + ] + ] + }, + { + "id": "43dd83070be818d8", + "type": "guide", + "z": "13374ec618504763", + "name": "Add Istio Service Mesh", + "info": "## Goals\n- Install Istio\n- Install an Istio Ingress Gateway\n- Securely expose the app with its own hostname\n\n## Checklist\nWIP", + "x": 270, + "y": 440, + "wires": [ + [ + "5ad47fc6ed33a9fd" + ] + ] + }, + { + "id": "c0c9b74371c0c8c3", + "type": "guide", + "z": "13374ec618504763", + "name": "Create K8s Cluster", + "info": "## Goal\nBuild a new K8s cluster using whatever tooling (K3d, Kind, EKS, etc) you prefer", + "x": 270, + "y": 290, + "wires": [ + [ + "8bf22775dd836668" + ] + ] + }, + { + "id": "fa0f28fa8cd90972", + "type": "comment", + "z": "13374ec618504763", + "name": "Note", + "info": "Learning Go is optional for this guide, this is just a prime opportunity to get introduced! \n\n## Goal\nThe goal of this node is to have a containerized web app with a database ready to be deployed onto K8s. (Note if you are building a custom app, it is recommended to have at least 1 CRUD operation so you can generate some traffic when the time comes).", + "x": 450, + "y": 70, + "wires": [ + [ + "6018b32890e917d5" + ] + ] + }, + { + "id": "5ad47fc6ed33a9fd", + "type": "guide", + "z": "13374ec618504763", + "name": "Kiali", + "info": "WIP", + "x": 270, + "y": 520, + "wires": [ + [ + "06fc4e182fa3fb81" + ] + ] + }, + { + "id": "06fc4e182fa3fb81", + "type": "guide", + "z": "13374ec618504763", + "name": "Prometheus", + "info": "WIP", + "x": 270, + "y": 600, + "wires": [ + [ + "2f1d37dbad9f2fb0" + ] + ] + }, + { + "id": "2f1d37dbad9f2fb0", + "type": "guide", + "z": "13374ec618504763", + "name": "Velero", + "info": "WIP", + "x": 270, + "y": 680, + "wires": [ + [ + "2f38309ec3176f7c" + ] + ] + }, + { + "id": "2f38309ec3176f7c", + "type": "guide", + "z": "13374ec618504763", + "name": "TBD!", + "info": "Other tools will be added eventually\n- Jaeger\n- SOPS\n- OPA (Gatekeeper)\n- ...", + "x": 270, + "y": 780, + "wires": [ + [] + ] + }, { "id": "40bfe328130d9c41", "type": "guide", @@ -623,5 +799,145 @@ "0f9889d8e9cb7edb" ] ] + }, + { + "id": "5dfd2ba38ec5178d", + "type": "resource", + "z": "eb7909bcf5fcaf8a", + "name": "Containerization", + "info": "", + "x": 430, + "y": 50, + "wires": [ + [ + "ea946e25b7c2079f" + ] + ] + }, + { + "id": "8c04bec4a15f6702", + "type": "resource", + "z": "eb7909bcf5fcaf8a", + "name": "Helm", + "info": "", + "x": 610, + "y": 200, + "wires": [ + [ + "803aead6445263d4" + ] + ] + }, + { + "id": "fc01372231b580db", + "type": "resource", + "z": "eb7909bcf5fcaf8a", + "name": "Custom Resource Definitions", + "info": "", + "x": 430, + "y": 200, + "wires": [ + [ + "803aead6445263d4" + ] + ] + }, + { + "id": "09d8e90d5b4ade12", + "type": "resource", + "z": "eb7909bcf5fcaf8a", + "name": "Kustomization", + "info": "", + "x": 90, + "y": 200, + "wires": [ + [ + "803aead6445263d4" + ] + ] + }, + { + "id": "71a96ec4058930db", + "type": "resource", + "z": "eb7909bcf5fcaf8a", + "name": "GitOps", + "info": "", + "x": 720, + "y": 150, + "wires": [ + [ + "45465f711df6da7e" + ] + ] + }, + { + "id": "98df2d11adb09046", + "type": "resource", + "z": "eb7909bcf5fcaf8a", + "name": "git", + "info": "# Description\n\n[Git](https://git-scm.com/) is a free and open source distributed version control system.\n\n## Resources\n- https://git-scm.com/docs\n\n\n## Examples\n- github.com\n- gitlab.com\n- https://gitea.com/", + "x": 720, + "y": 50, + "wires": [ + [ + "71a96ec4058930db" + ] + ] + }, + { + "id": "45465f711df6da7e", + "type": "resource", + "z": "eb7909bcf5fcaf8a", + "name": "Flux", + "info": "", + "x": 720, + "y": 200, + "wires": [ + [ + "803aead6445263d4" + ] + ] + }, + { + "id": "ea946e25b7c2079f", + "type": "subflow:0ac7681ed1c2bc4b", + "z": "eb7909bcf5fcaf8a", + "name": "", + "x": 430, + "y": 110, + "wires": [ + [ + "8c04bec4a15f6702", + "fc01372231b580db", + "09d8e90d5b4ade12", + "71a96ec4058930db", + "81348cdecdf51fd9" + ] + ] + }, + { + "id": "81348cdecdf51fd9", + "type": "resource", + "z": "eb7909bcf5fcaf8a", + "name": "Operators", + "info": "https://www.youtube.com/watch?v=ha3LjlD6g7g", + "x": 240, + "y": 200, + "wires": [ + [ + "803aead6445263d4" + ] + ] + }, + { + "id": "803aead6445263d4", + "type": "subflow:13374ec618504763", + "z": "eb7909bcf5fcaf8a", + "name": "", + "x": 420, + "y": 500, + "wires": [ + [] + ] } ] \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 4b5f0018c..89ac50b4a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "acorn": "8.7.0", "acorn-walk": "8.2.0", - "ajv": "8.9.0", + "ajv": "8.10.0", "async-mutex": "0.3.2", "basic-auth": "2.0.1", "bcryptjs": "2.4.3", @@ -19,7 +19,7 @@ "cheerio": "1.0.0-rc.10", "clone": "2.1.2", "content-type": "1.0.4", - "cookie": "0.4.1", + "cookie": "0.4.2", "cookie-parser": "1.4.6", "cors": "2.8.5", "cronosjs": "1.7.1", @@ -33,38 +33,38 @@ "hash-sum": "2.0.0", "hpagent": "0.1.2", "https-proxy-agent": "5.0.0", - "i18next": "21.6.10", + "i18next": "21.6.11", "iconv-lite": "0.6.3", "is-utf8": "0.2.1", "js-yaml": "3.14.1", "json-stringify-safe": "5.0.1", - "jsonata": "1.8.5", + "jsonata": "1.8.6", "lodash.clonedeep": "^4.5.0", "media-typer": "1.1.0", - "memorystore": "1.6.6", + "memorystore": "1.6.7", "mime": "3.0.0", "moment-timezone": "0.5.34", - "mqtt": "4.3.4", + "mqtt": "4.3.5", "multer": "1.4.4", "mustache": "4.2.0", - "node-red-admin": "^2.2.2", + "node-red-admin": "^2.2.3", "nopt": "5.0.0", "oauth2orize": "1.11.1", "on-headers": "1.0.2", "passport": "0.5.2", "passport-http-bearer": "1.0.1", "passport-oauth2-client-password": "0.1.2", - "raw-body": "2.4.2", + "raw-body": "2.4.3", "semver": "7.3.5", "tar": "6.1.11", "tough-cookie": "4.0.0", - "uglify-js": "3.15.0", + "uglify-js": "3.15.1", "uuid": "8.3.2", "ws": "7.5.6", "xml2js": "0.4.23" }, "devDependencies": { - "dompurify": "2.3.4", + "dompurify": "2.3.5", "grunt": "1.4.1", "grunt-chmod": "~1.1.1", "grunt-cli": "~1.4.3", @@ -93,11 +93,11 @@ "node-red-node-test-helper": "^0.2.7", "nodemon": "2.0.15", "proxy": "^1.0.2", - "sass": "1.49.0", + "sass": "1.49.7", "should": "13.2.3", "sinon": "11.1.2", "stoppable": "^1.1.0", - "supertest": "6.2.1" + "supertest": "6.2.2" }, "engines": { "node": ">=16" @@ -613,9 +613,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/ajv": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", - "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -967,11 +967,11 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "node_modules/axios": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", - "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz", + "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==", "dependencies": { - "follow-redirects": "^1.14.7" + "follow-redirects": "^1.14.8" } }, "node_modules/balanced-match": { @@ -1102,6 +1102,20 @@ "node": ">=0.10.0" } }, + "node_modules/body-parser/node_modules/raw-body": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", + "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", + "dependencies": { + "bytes": "3.1.1", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/body/node_modules/bytes": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz", @@ -1899,9 +1913,9 @@ } }, "node_modules/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", "engines": { "node": ">= 0.6" } @@ -1918,6 +1932,14 @@ "node": ">= 0.8.0" } }, + "node_modules/cookie-parser/node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/cookie-signature": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", @@ -2368,9 +2390,9 @@ } }, "node_modules/dompurify": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.4.tgz", - "integrity": "sha512-6BVcgOAVFXjI0JTjEvZy901Rghm+7fDQOrNIcxB4+gdhj6Kwp6T9VBhBY/AbagKHJocRkDYGd6wvI+p4/10xtQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.5.tgz", + "integrity": "sha512-kD+f8qEaa42+mjdOpKeztu9Mfx5bv9gVLO6K9jRx4uGvh6Wv06Srn4jr1wPNY2OOUGGSKHNFN+A8MA3v0E0QAQ==", "dev": true }, "node_modules/domutils": { @@ -2631,6 +2653,14 @@ "node": ">= 0.8.0" } }, + "node_modules/express-session/node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/express-session/node_modules/depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -2658,6 +2688,14 @@ } ] }, + "node_modules/express/node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/express/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -2914,9 +2952,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.14.8", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", - "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==", + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", "funding": [ { "type": "individual", @@ -4229,9 +4267,9 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/i18next": { - "version": "21.6.10", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.6.10.tgz", - "integrity": "sha512-Xw+tEGQ61BF6SXtBlFffhM/YhJKHZf2cyDrcNK/l2dE6yVbkPkSasC3VhkAsHXX30vUJ0yG04WIUtf7UvwjOxg==", + "version": "21.6.11", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.6.11.tgz", + "integrity": "sha512-tJ2+o0lVO+fhi8bPkCpBAeY1SgkqmQm5NzgPWCQssBrywJw98/o+Kombhty5nxQOpHtvMmsxcOopczUiH6bJxQ==", "funding": [ { "type": "individual", @@ -5145,9 +5183,9 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "node_modules/jsonata": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/jsonata/-/jsonata-1.8.5.tgz", - "integrity": "sha512-ilDyTBkg6qhNoNVr8PUPzz5GYvRK+REKOM5MdOGzH2y6V4yvPRMegSvbZLpbTtI0QAgz09QM7drDhSHUlwp9pA==", + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/jsonata/-/jsonata-1.8.6.tgz", + "integrity": "sha512-ZH2TPYdNP2JecOl/HvrH47Xc+9imibEMQ4YqKy/F/FrM+2a6vfbGxeCX23dB9Fr6uvGwv+ghf1KxWB3iZk09wA==", "engines": { "node": ">= 8" } @@ -5672,9 +5710,9 @@ } }, "node_modules/memorystore": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/memorystore/-/memorystore-1.6.6.tgz", - "integrity": "sha512-EbLl1xg9+DlnjXkZK/eMUoWyhZ1IxcWMpSuFyqyA/Z4BNuH7BR+E0yC40WbLZZ6G8LxHiUZ2DPhqV8DR8+9UQQ==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/memorystore/-/memorystore-1.6.7.tgz", + "integrity": "sha512-OZnmNY/NDrKohPQ+hxp0muBcBKrzKNtHr55DbqSx9hLsYVNnomSAMRAtI7R64t3gf3ID7tHQA7mG4oL3Hu9hdw==", "dependencies": { "debug": "^4.3.0", "lru-cache": "^4.0.3" @@ -6000,9 +6038,9 @@ } }, "node_modules/mqtt": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.4.tgz", - "integrity": "sha512-yAVDfVHz3Cjn6K68z54mf7fTni/AWsPhiEsRwZSvet2wO47R6NFUn2psWxYIph2JxWtL3ZKa/da8pjJKSaXPdQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.5.tgz", + "integrity": "sha512-l29WGHAc0EayK1cjb6moozc+rlgK6YRCPbP3zB1CrJw84Bjk4kG9EJCXojdn4r29lA80SCqxRKq1QJ87+Xevng==", "dependencies": { "commist": "^1.0.0", "concat-stream": "^2.0.0", @@ -6278,12 +6316,12 @@ } }, "node_modules/node-red-admin": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/node-red-admin/-/node-red-admin-2.2.2.tgz", - "integrity": "sha512-BYW12wu73B2/wRY9g4Hx8/bxUDZLHqu0DcbCNW5vdTJ6cFOSK8QoSX6u4tl9kIAowRsX4LunVlXR3VUKIj3Vng==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/node-red-admin/-/node-red-admin-2.2.3.tgz", + "integrity": "sha512-qKmnjR+TXJLk/aMUIW/x6I9P28b5BhlkvjNi1iZgfuVtI6wxRNpzpSUPtcOHvQTYxKdK6d5XGZdM6FD1Xy4nAg==", "dependencies": { "ansi-colors": "^4.1.1", - "axios": "0.25.0", + "axios": "0.26.0", "bcryptjs": "^2.4.3", "cli-table": "^0.3.11", "enquirer": "^2.3.6", @@ -8229,11 +8267,11 @@ } }, "node_modules/raw-body": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", "dependencies": { - "bytes": "3.1.1", + "bytes": "3.1.2", "http-errors": "1.8.1", "iconv-lite": "0.4.24", "unpipe": "1.0.0" @@ -8242,6 +8280,14 @@ "node": ">= 0.8" } }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/raw-body/node_modules/iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -8705,9 +8751,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sass": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.0.tgz", - "integrity": "sha512-TVwVdNDj6p6b4QymJtNtRS2YtLJ/CqZriGg0eIAbAKMlN8Xy6kbv33FsEZSF7FufFFM705SQviHjjThfaQ4VNw==", + "version": "1.49.7", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.7.tgz", + "integrity": "sha512-13dml55EMIR2rS4d/RDHHP0sXMY3+30e1TKsyXaSz3iLWVoDWEoboY8WzJd5JMnxrRHffKO3wq2mpJ0jxRJiEQ==", "dev": true, "dependencies": { "chokidar": ">=3.0.0 <4.0.0", @@ -8718,7 +8764,7 @@ "sass": "sass.js" }, "engines": { - "node": ">=8.9.0" + "node": ">=12.0.0" } }, "node_modules/sax": { @@ -9475,13 +9521,13 @@ } }, "node_modules/supertest": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.2.1.tgz", - "integrity": "sha512-2kBKhfZgnPLmjpzB0n7A2ZnEAWTaLXq4bn3EEVY9w8rUpLyIlSusqKKvWA1Cav7hxXBnXGpxBsSeOHj5wQGe1Q==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.2.2.tgz", + "integrity": "sha512-wCw9WhAtKJsBvh07RaS+/By91NNE0Wh0DN19/hWPlBOU8tAfOtbZoVSV4xXeoKoxgPx0rx2y+y+8660XtE7jzg==", "dev": true, "dependencies": { "methods": "^1.1.2", - "superagent": "^7.0.2" + "superagent": "^7.1.0" }, "engines": { "node": ">=6.0.0" @@ -9923,9 +9969,9 @@ "dev": true }, "node_modules/uglify-js": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.0.tgz", - "integrity": "sha512-x+xdeDWq7FiORDvyIJ0q/waWd4PhjBNOm5dQUOq2AKC0IEjxOS66Ha9tctiVDGcRQuh69K7fgU5oRuTK4cysSg==", + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.1.tgz", + "integrity": "sha512-FAGKF12fWdkpvNJZENacOH0e/83eG6JyVQyanIJaBXCN1J11TUQv1T1/z8S+Z0CG0ZPk1nPcreF/c7lrTd0TEQ==", "bin": { "uglifyjs": "bin/uglifyjs" }, @@ -10859,9 +10905,9 @@ } }, "ajv": { - "version": "8.9.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.9.0.tgz", - "integrity": "sha512-qOKJyNj/h+OWx7s5DePL6Zu1KeM9jPZhwBqs+7DzP6bGOvqzVCSf0xueYmVuaC/oQ/VtS2zLMLHdQFbkka+XDQ==", + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", "requires": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -11154,11 +11200,11 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "axios": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.25.0.tgz", - "integrity": "sha512-cD8FOb0tRH3uuEe6+evtAbgJtfxr7ly3fQjYcMcuPlgkwVS9xboaVIpcDV+cYQe+yGykgwZCs1pzjntcGa6l5g==", + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz", + "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==", "requires": { - "follow-redirects": "^1.14.7" + "follow-redirects": "^1.14.8" } }, "balanced-match": { @@ -11282,6 +11328,17 @@ "requires": { "safer-buffer": ">= 2.1.2 < 3" } + }, + "raw-body": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", + "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", + "requires": { + "bytes": "3.1.1", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } } } }, @@ -11886,9 +11943,9 @@ } }, "cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==" }, "cookie-parser": { "version": "1.4.6", @@ -11897,6 +11954,13 @@ "requires": { "cookie": "0.4.1", "cookie-signature": "1.0.6" + }, + "dependencies": { + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" + } } }, "cookie-signature": { @@ -12234,9 +12298,9 @@ } }, "dompurify": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.4.tgz", - "integrity": "sha512-6BVcgOAVFXjI0JTjEvZy901Rghm+7fDQOrNIcxB4+gdhj6Kwp6T9VBhBY/AbagKHJocRkDYGd6wvI+p4/10xtQ==", + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.5.tgz", + "integrity": "sha512-kD+f8qEaa42+mjdOpKeztu9Mfx5bv9gVLO6K9jRx4uGvh6Wv06Srn4jr1wPNY2OOUGGSKHNFN+A8MA3v0E0QAQ==", "dev": true }, "domutils": { @@ -12433,6 +12497,11 @@ "vary": "~1.1.2" }, "dependencies": { + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -12455,6 +12524,11 @@ "uid-safe": "~2.1.5" }, "dependencies": { + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" + }, "depd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", @@ -12658,9 +12732,9 @@ "dev": true }, "follow-redirects": { - "version": "1.14.8", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.8.tgz", - "integrity": "sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==" + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==" }, "for-in": { "version": "1.0.2", @@ -13666,9 +13740,9 @@ } }, "i18next": { - "version": "21.6.10", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.6.10.tgz", - "integrity": "sha512-Xw+tEGQ61BF6SXtBlFffhM/YhJKHZf2cyDrcNK/l2dE6yVbkPkSasC3VhkAsHXX30vUJ0yG04WIUtf7UvwjOxg==", + "version": "21.6.11", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.6.11.tgz", + "integrity": "sha512-tJ2+o0lVO+fhi8bPkCpBAeY1SgkqmQm5NzgPWCQssBrywJw98/o+Kombhty5nxQOpHtvMmsxcOopczUiH6bJxQ==", "requires": { "@babel/runtime": "^7.12.0" } @@ -14366,9 +14440,9 @@ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" }, "jsonata": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/jsonata/-/jsonata-1.8.5.tgz", - "integrity": "sha512-ilDyTBkg6qhNoNVr8PUPzz5GYvRK+REKOM5MdOGzH2y6V4yvPRMegSvbZLpbTtI0QAgz09QM7drDhSHUlwp9pA==" + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/jsonata/-/jsonata-1.8.6.tgz", + "integrity": "sha512-ZH2TPYdNP2JecOl/HvrH47Xc+9imibEMQ4YqKy/F/FrM+2a6vfbGxeCX23dB9Fr6uvGwv+ghf1KxWB3iZk09wA==" }, "jsonfile": { "version": "6.1.0", @@ -14805,9 +14879,9 @@ "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==" }, "memorystore": { - "version": "1.6.6", - "resolved": "https://registry.npmjs.org/memorystore/-/memorystore-1.6.6.tgz", - "integrity": "sha512-EbLl1xg9+DlnjXkZK/eMUoWyhZ1IxcWMpSuFyqyA/Z4BNuH7BR+E0yC40WbLZZ6G8LxHiUZ2DPhqV8DR8+9UQQ==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/memorystore/-/memorystore-1.6.7.tgz", + "integrity": "sha512-OZnmNY/NDrKohPQ+hxp0muBcBKrzKNtHr55DbqSx9hLsYVNnomSAMRAtI7R64t3gf3ID7tHQA7mG4oL3Hu9hdw==", "requires": { "debug": "^4.3.0", "lru-cache": "^4.0.3" @@ -15055,9 +15129,9 @@ } }, "mqtt": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.4.tgz", - "integrity": "sha512-yAVDfVHz3Cjn6K68z54mf7fTni/AWsPhiEsRwZSvet2wO47R6NFUn2psWxYIph2JxWtL3ZKa/da8pjJKSaXPdQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-4.3.5.tgz", + "integrity": "sha512-l29WGHAc0EayK1cjb6moozc+rlgK6YRCPbP3zB1CrJw84Bjk4kG9EJCXojdn4r29lA80SCqxRKq1QJ87+Xevng==", "requires": { "commist": "^1.0.0", "concat-stream": "^2.0.0", @@ -15279,12 +15353,12 @@ } }, "node-red-admin": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/node-red-admin/-/node-red-admin-2.2.2.tgz", - "integrity": "sha512-BYW12wu73B2/wRY9g4Hx8/bxUDZLHqu0DcbCNW5vdTJ6cFOSK8QoSX6u4tl9kIAowRsX4LunVlXR3VUKIj3Vng==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/node-red-admin/-/node-red-admin-2.2.3.tgz", + "integrity": "sha512-qKmnjR+TXJLk/aMUIW/x6I9P28b5BhlkvjNi1iZgfuVtI6wxRNpzpSUPtcOHvQTYxKdK6d5XGZdM6FD1Xy4nAg==", "requires": { "ansi-colors": "^4.1.1", - "axios": "0.25.0", + "axios": "0.26.0", "bcrypt": "5.0.1", "bcryptjs": "^2.4.3", "cli-table": "^0.3.11", @@ -16837,16 +16911,21 @@ "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" }, "raw-body": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.2.tgz", - "integrity": "sha512-RPMAFUJP19WIet/99ngh6Iv8fzAbqum4Li7AD6DtGaW2RpMB/11xDoalPiJMTbu6I3hkbMVkATvZrqb9EEqeeQ==", + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", "requires": { - "bytes": "3.1.1", + "bytes": "3.1.2", "http-errors": "1.8.1", "iconv-lite": "0.4.24", "unpipe": "1.0.0" }, "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" + }, "iconv-lite": { "version": "0.4.24", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", @@ -17214,9 +17293,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sass": { - "version": "1.49.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.0.tgz", - "integrity": "sha512-TVwVdNDj6p6b4QymJtNtRS2YtLJ/CqZriGg0eIAbAKMlN8Xy6kbv33FsEZSF7FufFFM705SQviHjjThfaQ4VNw==", + "version": "1.49.7", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.49.7.tgz", + "integrity": "sha512-13dml55EMIR2rS4d/RDHHP0sXMY3+30e1TKsyXaSz3iLWVoDWEoboY8WzJd5JMnxrRHffKO3wq2mpJ0jxRJiEQ==", "dev": true, "requires": { "chokidar": ">=3.0.0 <4.0.0", @@ -17830,13 +17909,13 @@ } }, "supertest": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.2.1.tgz", - "integrity": "sha512-2kBKhfZgnPLmjpzB0n7A2ZnEAWTaLXq4bn3EEVY9w8rUpLyIlSusqKKvWA1Cav7hxXBnXGpxBsSeOHj5wQGe1Q==", + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/supertest/-/supertest-6.2.2.tgz", + "integrity": "sha512-wCw9WhAtKJsBvh07RaS+/By91NNE0Wh0DN19/hWPlBOU8tAfOtbZoVSV4xXeoKoxgPx0rx2y+y+8660XtE7jzg==", "dev": true, "requires": { "methods": "^1.1.2", - "superagent": "^7.0.2" + "superagent": "^7.1.0" } }, "supports-color": { @@ -18206,9 +18285,9 @@ "dev": true }, "uglify-js": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.0.tgz", - "integrity": "sha512-x+xdeDWq7FiORDvyIJ0q/waWd4PhjBNOm5dQUOq2AKC0IEjxOS66Ha9tctiVDGcRQuh69K7fgU5oRuTK4cysSg==" + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.1.tgz", + "integrity": "sha512-FAGKF12fWdkpvNJZENacOH0e/83eG6JyVQyanIJaBXCN1J11TUQv1T1/z8S+Z0CG0ZPk1nPcreF/c7lrTd0TEQ==" }, "uid-safe": { "version": "2.1.5",