From 07b9838a531af5bc37a838282e1287f79352b19c Mon Sep 17 00:00:00 2001 From: UncleGedd <42304551+UncleGedd@users.noreply.github.com> Date: Tue, 22 Mar 2022 12:16:05 -0500 Subject: [PATCH] adds Go and bb-up flows (#31) * adds Go and bb-up flows * Move big bang to a subflow Co-authored-by: andrew.greene --- data/flows.json | 524 +++++++++++++++++++++++++++++++-------- package-lock.json | 618 +++++++++++++++++++++++++++------------------- 2 files changed, 787 insertions(+), 355 deletions(-) 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 a750c4729..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.8.2", + "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.6", + "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", - "mime": "2.5.2", + "memorystore": "1.6.7", + "mime": "3.0.0", "moment-timezone": "0.5.34", - "mqtt": "4.3.4", - "multer": "1.4.3", + "mqtt": "4.3.5", + "multer": "1.4.4", "mustache": "4.2.0", - "node-red-admin": "^2.2.1", + "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.14.5", + "uglify-js": "3.15.1", "uuid": "8.3.2", - "ws": "7.5.1", + "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", @@ -84,20 +84,20 @@ "grunt-sass": "~3.1.0", "grunt-simple-mocha": "~0.4.1", "grunt-simple-nyc": "^3.0.1", - "i18next-http-backend": "1.3.1", + "i18next-http-backend": "1.3.2", "jquery-i18next": "1.2.1", "jsdoc-nr-template": "github:node-red/jsdoc-nr-template", - "marked": "4.0.10", + "marked": "4.0.12", "minami": "1.2.3", - "mocha": "9.1.3", + "mocha": "9.2.0", "node-red-node-test-helper": "^0.2.7", "nodemon": "2.0.15", "proxy": "^1.0.2", - "sass": "1.48.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.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "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.22.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.22.0.tgz", - "integrity": "sha512-Z0U3uhqQeg1oNcihswf4ZD57O3NrR1+ZXhxaROaWpDmsDTx7T2HNBV2ulBtie2hwJptu8UvgnJoK+BIqdzh/1w==", + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz", + "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==", "dependencies": { - "follow-redirects": "^1.14.4" + "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", @@ -1475,10 +1489,16 @@ } }, "node_modules/chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -1893,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" } @@ -1912,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", @@ -2025,21 +2053,12 @@ } }, "node_modules/cross-fetch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", - "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", "dev": true, "dependencies": { - "node-fetch": "2.6.1" - } - }, - "node_modules/cross-fetch/node_modules/node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true, - "engines": { - "node": "4.x || >=6.0.0" + "node-fetch": "2.6.7" } }, "node_modules/cross-spawn": { @@ -2371,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": { @@ -2634,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", @@ -2661,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", @@ -2917,9 +2952,9 @@ } }, "node_modules/follow-redirects": { - "version": "1.14.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz", - "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==", + "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", @@ -4232,20 +4267,34 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/i18next": { - "version": "21.6.6", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.6.6.tgz", - "integrity": "sha512-K1Pw8K+nHVco56PO6UrqNq4K/ZVbb2eqBQwPqmzYDm4tGQYXBjdz8jrnvuNvV5STaE8oGpWKQMxHOvh2zhVE7Q==", + "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", + "url": "https://locize.com" + }, + { + "type": "individual", + "url": "https://locize.com/i18next.html" + }, + { + "type": "individual", + "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" + } + ], "dependencies": { "@babel/runtime": "^7.12.0" } }, "node_modules/i18next-http-backend": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-1.3.1.tgz", - "integrity": "sha512-o79n4GBBRpl20hByC+ne/S1UaSZ4iGAn59Hu2TEZGjN0WLB72L7WrM39Cshziyrssp6MQfdI8wjToU2Q6kpSvA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-1.3.2.tgz", + "integrity": "sha512-SfcoUmsSWnc2LYsDsCq5TCg18cxJXvXymX9N37V+qqMKQY8Gf0rWkjOnRd20sMK633Dq4NF9tvqPbOiFJ49Kbw==", "dev": true, "dependencies": { - "cross-fetch": "3.1.4" + "cross-fetch": "3.1.5" } }, "node_modules/iconv-lite": { @@ -5134,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" } @@ -5540,9 +5589,9 @@ "dev": true }, "node_modules/marked": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz", - "integrity": "sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz", + "integrity": "sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==", "dev": true, "bin": { "marked": "bin/marked.js" @@ -5661,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" @@ -5738,14 +5787,14 @@ } }, "node_modules/mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", "bin": { "mime": "cli.js" }, "engines": { - "node": ">=4.0.0" + "node": ">=10.0.0" } }, "node_modules/mime-db": { @@ -5848,32 +5897,32 @@ "dev": true }, "node_modules/mocha": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz", - "integrity": "sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.0.tgz", + "integrity": "sha512-kNn7E8g2SzVcq0a77dkphPsDSN7P+iYkqE0ZsGCYWRsoiKjOt+NvXfaagik8vuDa6W5Zw3qxe8Jfpt5qKf+6/Q==", "dev": true, "dependencies": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.5.2", - "debug": "4.3.2", + "chokidar": "3.5.3", + "debug": "4.3.3", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.1.7", + "glob": "7.2.0", "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", "minimatch": "3.0.4", "ms": "2.1.3", - "nanoid": "3.1.25", + "nanoid": "3.2.0", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", "which": "2.0.2", - "workerpool": "6.1.5", + "workerpool": "6.2.0", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" @@ -5897,9 +5946,9 @@ "dev": true }, "node_modules/mocha/node_modules/debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "dependencies": { "ms": "2.1.2" @@ -5931,6 +5980,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/mocha/node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -5969,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", @@ -6063,26 +6132,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/mqtt/node_modules/ws": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", - "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/mqtt/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -6103,9 +6152,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "node_modules/multer": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.3.tgz", - "integrity": "sha512-np0YLKncuZoTzufbkM6wEKp68EhWJXcU6fq6QqrSwkckd2LlMgd1UqhUJLj6NS/5sZ8dE8LYDWslsltJznnXlg==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4.tgz", + "integrity": "sha512-2wY2+xD4udX612aMqMcB8Ws2Voq6NIUPEtD1be6m411T4uDH/VtL9i//xvcyFlTVfRdaBsk7hV5tgrGQqhuBiw==", "dependencies": { "append-field": "^1.0.0", "busboy": "^0.2.11", @@ -6181,9 +6230,9 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "node_modules/nanoid": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", - "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", "dev": true, "bin": { "nanoid": "bin/nanoid.cjs" @@ -6247,26 +6296,34 @@ "optional": true }, "node_modules/node-fetch": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", - "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", - "optional": true, + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "devOptional": true, "dependencies": { "whatwg-url": "^5.0.0" }, "engines": { "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, "node_modules/node-red-admin": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-red-admin/-/node-red-admin-2.2.1.tgz", - "integrity": "sha512-xYp6mZaRbAWLR8nO4HRVvthYZoPGBotPvetAGho4AXpRJW7fXw38XwK0KPSffvLSis6cxaskJq9nZBLp3PJtng==", + "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.22.0", + "axios": "0.26.0", "bcryptjs": "^2.4.3", - "cli-table": "^0.3.4", + "cli-table": "^0.3.11", "enquirer": "^2.3.6", "minimist": "^1.2.5", "mustache": "^4.2.0", @@ -8210,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" @@ -8223,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", @@ -8686,9 +8751,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sass": { - "version": "1.48.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.48.0.tgz", - "integrity": "sha512-hQi5g4DcfjcipotoHZ80l7GNJHGqQS5LwMBjVYB/TaT0vcSSpbgM8Ad7cgfsB2M0MinbkEQQPO9+sjjSiwxqmw==", + "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", @@ -8699,7 +8764,7 @@ "sass": "sass.js" }, "engines": { - "node": ">=8.9.0" + "node": ">=12.0.0" } }, "node_modules/sax": { @@ -9422,6 +9487,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/superagent/node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, "node_modules/superagent/node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -9444,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" @@ -9829,7 +9906,7 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "optional": true + "devOptional": true }, "node_modules/tslib": { "version": "2.3.1", @@ -9892,9 +9969,9 @@ "dev": true }, "node_modules/uglify-js": { - "version": "3.14.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.5.tgz", - "integrity": "sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ==", + "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" }, @@ -10119,7 +10196,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "optional": true + "devOptional": true }, "node_modules/websocket-driver": { "version": "0.7.4", @@ -10148,7 +10225,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "optional": true, + "devOptional": true, "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -10225,9 +10302,9 @@ } }, "node_modules/workerpool": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz", - "integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", "dev": true }, "node_modules/wrap-ansi": { @@ -10264,9 +10341,9 @@ } }, "node_modules/ws": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.1.tgz", - "integrity": "sha512-2c6faOUH/nhoQN6abwMloF7Iyl0ZS2E9HGtsiLrWn0zOOMWlhtDmdf/uihDt6jnuCxgtwGBNy6Onsoy2s2O2Ow==", + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", + "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", "engines": { "node": ">=8.3.0" }, @@ -10828,9 +10905,9 @@ } }, "ajv": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "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", @@ -11123,11 +11200,11 @@ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, "axios": { - "version": "0.22.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.22.0.tgz", - "integrity": "sha512-Z0U3uhqQeg1oNcihswf4ZD57O3NrR1+ZXhxaROaWpDmsDTx7T2HNBV2ulBtie2hwJptu8UvgnJoK+BIqdzh/1w==", + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.26.0.tgz", + "integrity": "sha512-lKoGLMYtHvFrPVt3r+RBMp9nh34N0M8zEfCWqdWZx6phynIEhQqAdydpyBAAG211zlhX9Rgu08cOamy6XjE5Og==", "requires": { - "follow-redirects": "^1.14.4" + "follow-redirects": "^1.14.8" } }, "balanced-match": { @@ -11251,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" + } } } }, @@ -11517,9 +11605,9 @@ } }, "chokidar": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", - "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", "dev": true, "requires": { "anymatch": "~3.1.2", @@ -11855,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", @@ -11866,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": { @@ -11956,20 +12051,12 @@ "integrity": "sha512-d6S6+ep7dJxsAG8OQQCdKuByI/S/AV64d9OF5mtmcykOyPu92cAkAnF3Tbc9s5oOaLQBYYQmTNvjqYRkPJ/u5Q==" }, "cross-fetch": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.4.tgz", - "integrity": "sha512-1eAtFWdIubi6T4XPy6ei9iUFoKpUkIF971QLN8lIvvvwueI65+Nw5haMNKUwfJxabqlIIDODJKGrQ66gxC0PbQ==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz", + "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==", "dev": true, "requires": { - "node-fetch": "2.6.1" - }, - "dependencies": { - "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", - "dev": true - } + "node-fetch": "2.6.7" } }, "cross-spawn": { @@ -12211,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": { @@ -12410,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", @@ -12432,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", @@ -12635,9 +12732,9 @@ "dev": true }, "follow-redirects": { - "version": "1.14.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz", - "integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==" + "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", @@ -13643,20 +13740,20 @@ } }, "i18next": { - "version": "21.6.6", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-21.6.6.tgz", - "integrity": "sha512-K1Pw8K+nHVco56PO6UrqNq4K/ZVbb2eqBQwPqmzYDm4tGQYXBjdz8jrnvuNvV5STaE8oGpWKQMxHOvh2zhVE7Q==", + "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" } }, "i18next-http-backend": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-1.3.1.tgz", - "integrity": "sha512-o79n4GBBRpl20hByC+ne/S1UaSZ4iGAn59Hu2TEZGjN0WLB72L7WrM39Cshziyrssp6MQfdI8wjToU2Q6kpSvA==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-1.3.2.tgz", + "integrity": "sha512-SfcoUmsSWnc2LYsDsCq5TCg18cxJXvXymX9N37V+qqMKQY8Gf0rWkjOnRd20sMK633Dq4NF9tvqPbOiFJ49Kbw==", "dev": true, "requires": { - "cross-fetch": "3.1.4" + "cross-fetch": "3.1.5" } }, "iconv-lite": { @@ -14343,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", @@ -14692,9 +14789,9 @@ "requires": {} }, "marked": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz", - "integrity": "sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.12.tgz", + "integrity": "sha512-hgibXWrEDNBWgGiK18j/4lkS6ihTe9sxtV4Q1OQppb/0zzyPSzoFANBa5MfsG/zgsWklmNnhm0XACZOH/0HBiQ==", "dev": true }, "maxmin": { @@ -14782,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" @@ -14843,9 +14940,9 @@ } }, "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==" }, "mime-db": { "version": "1.51.0", @@ -14927,32 +15024,32 @@ "dev": true }, "mocha": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.1.3.tgz", - "integrity": "sha512-Xcpl9FqXOAYqI3j79pEtHBBnQgVXIhpULjGQa7DVb0Po+VzmSIK9kanAiWLHoRR/dbZ2qpdPshuXr8l1VaHCzw==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.0.tgz", + "integrity": "sha512-kNn7E8g2SzVcq0a77dkphPsDSN7P+iYkqE0ZsGCYWRsoiKjOt+NvXfaagik8vuDa6W5Zw3qxe8Jfpt5qKf+6/Q==", "dev": true, "requires": { "@ungap/promise-all-settled": "1.1.2", "ansi-colors": "4.1.1", "browser-stdout": "1.3.1", - "chokidar": "3.5.2", - "debug": "4.3.2", + "chokidar": "3.5.3", + "debug": "4.3.3", "diff": "5.0.0", "escape-string-regexp": "4.0.0", "find-up": "5.0.0", - "glob": "7.1.7", + "glob": "7.2.0", "growl": "1.10.5", "he": "1.2.0", "js-yaml": "4.1.0", "log-symbols": "4.1.0", "minimatch": "3.0.4", "ms": "2.1.3", - "nanoid": "3.1.25", + "nanoid": "3.2.0", "serialize-javascript": "6.0.0", "strip-json-comments": "3.1.1", "supports-color": "8.1.1", "which": "2.0.2", - "workerpool": "6.1.5", + "workerpool": "6.2.0", "yargs": "16.2.0", "yargs-parser": "20.2.4", "yargs-unparser": "2.0.0" @@ -14965,9 +15062,9 @@ "dev": true }, "debug": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", - "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, "requires": { "ms": "2.1.2" @@ -14987,6 +15084,20 @@ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, "js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -15018,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", @@ -15062,12 +15173,6 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "ws": { - "version": "7.5.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", - "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", - "requires": {} - }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", @@ -15112,9 +15217,9 @@ "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" }, "multer": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.3.tgz", - "integrity": "sha512-np0YLKncuZoTzufbkM6wEKp68EhWJXcU6fq6QqrSwkckd2LlMgd1UqhUJLj6NS/5sZ8dE8LYDWslsltJznnXlg==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/multer/-/multer-1.4.4.tgz", + "integrity": "sha512-2wY2+xD4udX612aMqMcB8Ws2Voq6NIUPEtD1be6m411T4uDH/VtL9i//xvcyFlTVfRdaBsk7hV5tgrGQqhuBiw==", "requires": { "append-field": "^1.0.0", "busboy": "^0.2.11", @@ -15180,9 +15285,9 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==" }, "nanoid": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.1.25.tgz", - "integrity": "sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.2.0.tgz", + "integrity": "sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA==", "dev": true }, "negotiator": { @@ -15239,24 +15344,24 @@ "optional": true }, "node-fetch": { - "version": "2.6.6", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", - "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", - "optional": true, + "version": "2.6.7", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", + "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "devOptional": true, "requires": { "whatwg-url": "^5.0.0" } }, "node-red-admin": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-red-admin/-/node-red-admin-2.2.1.tgz", - "integrity": "sha512-xYp6mZaRbAWLR8nO4HRVvthYZoPGBotPvetAGho4AXpRJW7fXw38XwK0KPSffvLSis6cxaskJq9nZBLp3PJtng==", + "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.22.0", + "axios": "0.26.0", "bcrypt": "5.0.1", "bcryptjs": "^2.4.3", - "cli-table": "^0.3.4", + "cli-table": "^0.3.11", "enquirer": "^2.3.6", "minimist": "^1.2.5", "mustache": "^4.2.0", @@ -16806,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", @@ -17183,9 +17293,9 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "sass": { - "version": "1.48.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.48.0.tgz", - "integrity": "sha512-hQi5g4DcfjcipotoHZ80l7GNJHGqQS5LwMBjVYB/TaT0vcSSpbgM8Ad7cgfsB2M0MinbkEQQPO9+sjjSiwxqmw==", + "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", @@ -17775,6 +17885,12 @@ } } }, + "mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -17793,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": { @@ -18113,7 +18229,7 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "optional": true + "devOptional": true }, "tslib": { "version": "2.3.1", @@ -18169,9 +18285,9 @@ "dev": true }, "uglify-js": { - "version": "3.14.5", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.14.5.tgz", - "integrity": "sha512-qZukoSxOG0urUTvjc2ERMTcAy+BiFh3weWAkeurLwjrCba73poHmG3E36XEjd/JGukMzwTL7uCxZiAexj8ppvQ==" + "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", @@ -18344,7 +18460,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "optional": true + "devOptional": true }, "websocket-driver": { "version": "0.7.4", @@ -18367,7 +18483,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", - "optional": true, + "devOptional": true, "requires": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -18431,9 +18547,9 @@ } }, "workerpool": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.1.5.tgz", - "integrity": "sha512-XdKkCK0Zqc6w3iTxLckiuJ81tiD/o5rBE/m+nXpRCB+/Sq4DqkfXZ/x0jW02DG1tGsfUGXbTJyZDP+eu67haSw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", + "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", "dev": true }, "wrap-ansi": { @@ -18464,9 +18580,9 @@ } }, "ws": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.1.tgz", - "integrity": "sha512-2c6faOUH/nhoQN6abwMloF7Iyl0ZS2E9HGtsiLrWn0zOOMWlhtDmdf/uihDt6jnuCxgtwGBNy6Onsoy2s2O2Ow==", + "version": "7.5.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", + "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", "requires": {} }, "xdg-basedir": {